2017-10-10 2 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 + ">");  
} 

작동하지 않습니다.

그러나 Queue, TopicExchange, @SpringBootApplication의 바인딩을 지정하면 정상적으로 작동합니다.

@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에 바인딩, 큐, TopicExchange을 지정하는 필수인가? 그렇다면, 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 = "#" 모든 메시지를 얻을 수 ... 주제 교환 라우팅 키가 필요합니다.

+0

고마워요. 키를 추가 한 후 작동합니다. – Krish