2017-10-10 5 views
0

にバインド、送信していない私は、次のようにメッセージを送信しようとした:メッセージがSpringBootApplication

rabbitTemplate.convertAndSend("my.exchange", "my.queue", "Test Message"); 

を、次のようにメッセージを受信しようとした:

@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "my.queue", durable = "true"), exchange = @Exchange(value = "my.exchange", durable = "true", type = ExchangeTypes.TOPIC))) 
public void receiveAuditMessage(String message) { 
    log.info("Received <" + message + ">");  
} 

動作しませんでした。

しかし、@SpringBootApplicationのQueue、TopicExchange、Bindingを指定すると、正常に動作します。

@Bean 
Queue queue() { 
    return new Queue("my.queue"); 
} 

@Bean 
TopicExchange exchange() { 
    return new TopicExchange("my.exchange"); 
} 

@Bean 
Binding binding(Queue queue, TopicExchange exchange) { 
    return BindingBuilder.bind(queue).to(exchange).with("my.queue"); 
} 

SpringBootApplicationでQueue、TopicExchange、Bindingを指定することは必須ですか? はいの場合、SpringBootApplicationで複数のQueue、TopicExchange、Bindingを指定する方法は?

ここをクリックしてください。ありがとう。

答えて

0

最初のケースでは、キューと交換を作成していますが、バインディングのルーティングキーはありません。あなたはすべてのメッセージを取得するために

@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "my.queue", durable = "true"), 
     exchange = @Exchange(value = "my.exchange", durable = "true", type = ExchangeTypes.TOPIC), 
     key = "my.queue")) 
public void receiveAuditMessage(String message) { 
    System.out.println("Received <" + message + ">"); 
} 

それともkey = "#" ... TOPIC交換のためのルーティングキーが必要です。

+0

ありがとうございます。キーを追加した後の動作。 – Krish

関連する問題