繁体   English   中英

为多个RabbitMQ消费者提供相同的消息

[英]Avail same messages to multiple RabbitMQ Consumers

要求:1)我需要通过Java应用程序获取存储在Mongo DB中的数据,并使用主题交换和绑定密钥,在RabbitMQ上创建3个队列。 到目前为止,我已经实现了一切。

问题从第2点开始。

2)当消息应该从所有3个队列中的多个消费者可用时。 但是当第一个消费者消费来自3个队列的消息时,其他消费者将无法使用它。 如何使消息高度可供多个消费者使用。

有没有办法实现这一点,或者这个要求是否有任何替代解决方案。

您的所有消费者必须提供自己的唯一queue并将其绑定到同一个exchange

AMQP中没有这样的Topic抽象,就像JMS一样。

即使我们可以通过主题或扇出交换发布消息,该消息也将作为单个条目放入队列,因此只有一个消费者能够从该消息中获取消息。

我的命题的配置可能如下所示:

<queue id="commandQueue" name="#{node.id}.command"
       auto-delete="true"/>

<fanout-exchange name="commandsExchange">
    <bindings>
        <binding queue="commandQueue"/>
    </bindings>
</fanout-exchange>

<amqp:inbound-channel-adapter id="commandConsumer"
                              queue-names="#{commandQueue.name}"
                              channel="commandChannel"/>

所有我的应用程序实例都将它们的唯一queue (基于node.id抽象)绑定到相同的commandsExchange 发布到commandsExchange消息将传递给我的所有节点。

如果节点已经死了, auto-delete="true"可以帮助我避免队列中的额外消息。

HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM