このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring AMQP 3.2.5 を使用してください! |
コンテナーファクトリの使用
リスナーコンテナーファクトリは、プログラムによるエンドポイント登録に従って、@RabbitListener
をサポートし、コンテナーを RabbitListenerEndpointRegistry
に登録するために導入されました。
バージョン 2.1 から、これらを使用して任意のリスナーコンテナーを作成できます。リスナーのないコンテナー (Spring Integration で使用する場合など) も作成できます。もちろん、コンテナーを開始する前にリスナーを追加する必要があります。
このようなコンテナーを作成するには、次の 2 つの方法があります。
SimpleRabbitListenerEndpoint を使用
作成後にリスナーを追加する
次の例は、SimpleRabbitListenerEndpoint
を使用してリスナーコンテナーを作成する方法を示しています。
@Bean
public SimpleMessageListenerContainer factoryCreatedContainerSimpleListener(
SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory) {
SimpleRabbitListenerEndpoint endpoint = new SimpleRabbitListenerEndpoint();
endpoint.setQueueNames("queue.1");
endpoint.setMessageListener(message -> {
...
});
return rabbitListenerContainerFactory.createListenerContainer(endpoint);
}
次の例は、作成後にリスナーを追加する方法を示しています。
@Bean
public SimpleMessageListenerContainer factoryCreatedContainerNoListener(
SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory) {
SimpleMessageListenerContainer container = rabbitListenerContainerFactory.createListenerContainer();
container.setMessageListener(message -> {
...
});
container.setQueueNames("test.no.listener.yet");
return container;
}
いずれの場合も、リスナーは MessageListener
のサブインターフェースになっているため、ChannelAwareMessageListener
にすることもできます。
これらの手法は、同様のプロパティを持つ複数のコンテナーを作成する場合、または Spring Boot 自動構成によって提供されるような事前構成されたコンテナーファクトリを使用する場合、またはその両方を使用する場合に役立ちます。
この方法で作成されたコンテナーは通常の @Bean インスタンスであり、RabbitListenerEndpointRegistry には登録されません。 |