イベントE1を発行するクラスAがあります。 E1は、@RabbitListener
で注釈付けされた同じアプリケーション内のクラスBによって消費されます。 Bはいくつかのことを行い、Cなど(プロセスチェーンを形成する)によって消費されるイベントE2を公開します。Springで特定の@ RabbitListenerをプログラムで有効または無効にしますか?
私は何をしたい二つのものです:私は統合テストでテストしたいが、そうしながら、私は結果であるRabbitListener's
ように全体のプロセスを無効にしたい
- 公開されているE1は実行されません。私は、Aがそれが想定していることを行い、E1を公表することを主張するだけです。私は
spring.rabbitmq.listener.auto-startup=false
を設定してこれに対応しました。 - E1のRabbitMQを公開してBの
RabbitListerner
を正しく構成したことを確信できるように、統合テストでBをテストしたいと考えています。しかし、もう一度私はCがE2の副作用として発行されることを望んでいません。
は、私はおそらく、このモックを使用したが、好ましくは、私は本物をテストしたいと(私の場合はドッカーで実行されていることを実際のRabbitMQのインスタンスにメッセージを送ることを含む)実際の部品を使用して行うことができます知っています。
これをSpring Bootでうまくいく方法で実現できますか?または、おそらく@RabbitListenerTest
を使用し、本当にモックを使用することをお勧めしますか?
/**
* The unique identifier of the container managing for this endpoint.
* <p>If none is specified an auto-generated one is provided.
* @return the {@code id} for the container managing for this endpoint.
* @see org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry#getListenerContainer(String)
*/
String id() default "";
そして、そこRabbitListenerEndpointRegistry#getListenerContainer(String)
戻っMessageListenerContainer
とは、あなたがすでに個々@RabbitListener
ハンドラのstart()/stop()
を制御することができる。