2017-04-12 13 views
1

イベントE1を発行するクラスAがあります。 E1は、@RabbitListenerで注釈付けされた同じアプリケーション内のクラスBによって消費されます。 Bはいくつかのことを行い、Cなど(プロセスチェーンを形成する)によって消費されるイベントE2を公開します。Springで特定の@ RabbitListenerをプログラムで有効または無効にしますか?

私は何をしたい二つのものです:私は統合テストでテストしたいが、そうしながら、私は結果であるRabbitListener'sように全体のプロセスを無効にしたい

  1. 公開されているE1は実行されません。私は、Aがそれが想定していることを行い、E1を公表することを主張するだけです。私はspring.rabbitmq.listener.auto-startup=falseを設定してこれに対応しました。
  2. 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()を制御することができる。

答えて

3

@RabbitListenerid性質を持っています。

関連する問題