我知道RabbitMQ不支持JMSXGroupId,而且从link开始,这个功能似乎不久就会被整合到RabbitMQ中。使用交换/队列/主题的组合是否有任何解决方法?这是我的用例。
假设我有1个Producer Server和2个消费者服务器,其中有多个消费者线程从队列中消耗。 Producer Server创建网络,子网和多个端口。所有这些请求都转换为json / stomp并放入队列中。现在,我如何保证同一个线程处理属于同一网络的所有这些请求。在ActiveMQ或Artemis中,我们可以将JMSXGroupId设置为网络名称,并确保消息由同一线程获取/确保存在属于同一组网络的消息的排序。我怎样才能在RabbitMQ中实现这一目标?
第二部分,如果以上是可能的(我有点贪心),是否也可以说,我已启用route_key并为网络/端口/子网或扇出创建不同的队列,并确保发布属于不同的消息基于消息组的订单消费。
我看到客户端有使用spring-integration here的解决方法,但它在客户端不在rabbitmq-server本身。因此,我不确定如何确保HA(主动 - 主动模式)中的事务和原子性在同一个线程中处理。
答案 0 :(得分:0)
好的,在再次回答您的问题后,您似乎在创建网络,子网和端口时发布不同的消息。所有创建单独的消息并发布。现在看起来你有多个消费者,因此一个消费者可能消费创建网络的消息,而其他消费者可能消耗创建子网或端口的消息。
要处理这种情况,您基本上是将消息发布到交换机,交换机将消息路由到特定队列。
现在,如果您在消费者端订阅了唯一的独立队列,则可以解决上述问题。
Producer -> Exchange -> Queue1 -> Consumer1
Producer -> Exchange -> Queue2 -> Consumer2