消息仅发布到RabbitMQ扇出交换(java)中的一个队列

时间:2017-11-10 00:02:21

标签: java spring rabbitmq

所以,我有2个队列,outboundEmailQueue和storeEmailQueue:

<rabbit:queue name="outboundEmailQueue"/>
<rabbit:queue name="storeEmailQueue"/>

绑定到名为integrationExchange的扇出交换:

<rabbit:fanout-exchange name="integrationExchange" auto-declare="true">
    <rabbit:bindings>
        <rabbit:binding queue="outboundEmailQueue"/>
        <rabbit:binding queue="storeEmailQueue"/>
    </rabbit:bindings>
</rabbit:fanout-exchange>

模板:

<rabbit:template id="integrationRabbitTemplate"
    connection-factory="connectionFactory" exchange="integrationExchange"
    message-converter="jsonMessageConverter" return-callback="returnCallback"
    confirm-callback="confirmCallback" />

我如何向交易所发送对象:

integrationRabbitTemplate.convertAndSend("integrationExchange", "", outboundEmail);

但是,该消息仅发布到storeEmailQueue:

enter image description here

enter image description here

我的配置有什么问题?为什么邮件没有排队到outboundEmailQueue?

2 个答案:

答案 0 :(得分:1)

从屏幕截图中看,您的配置似乎正常,并且消息正在到达两个队列。 但每个队列上的消费者配置并不相同:

  • storeEmailQueue已配置消费者确认
  • outboundEmailQueue已配置autoack

如果您有疑问:

  • 检查交换机或队列的绑定部分以确认链接是否存在(但是再次,从您的屏幕截图中看起来可能存在)
  • 停止消费者并将消息推送到交换机,您应该看到两个队列上的消息准备计数(和总计数)增加。

答案 1 :(得分:0)

我创建了相同的示例,并且其工作正常,消息正被添加到队列中,但我通过注释而不是XML进行配置。如果您需要注释解决方案,请点击以下链接:

https://stackoverflow.com/questions/45803231/how-to-publish-messages-on-rabbitmq-with-fanout-exchange-using-spring-boot