我正在使用RabbitMQ向2个或更多消费者发送消息。 看着the simple tutorial,我可以很容易地做到这一点。
但是我也想扩展我的一些消费者,并允许一些消费者始终处理消息,而一些消费者仅在未处理消息时处理消息已经被另一个“类似”消费者使用。
|-------> cA
|
P --|-------> cB'
|
|-------> cB"
在上面的示例中:
cA
将始终处理邮件,无论如何。cB'
尚未处理邮件,则cB"
将仅处理邮件。cB"
还没有处理邮件,cB'
将仅处理邮件。这个想法是要尽可能快地处理数据,并且(如上图所示),如果cB'
或cB"
需要联系数据库或API,我希望另一个消费者来接管尽可能快地将数据移出队列。
但是我也不想多次收集这些数据。
我总是可以添加其他发布者,并将消息从队列中删除,但是我不确定这是否真的是实现我所追求的最有效的方法。
|-------> cA
|
P --|-------> p'--|-------> cB'
|
|-------> cB"
在RabbitMQ中可以实现吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果我正确理解了您的问题,设置2个队列的设置将解决您的问题。
两个队列都必须使用相同的路由密钥绑定到exchange(X)。
如果您以以下方式预订队列:
路由和订阅概述:
|--<routing key>---queue1-----cA
P---X---|
| |--cB'
|--<routing key>---queue2--|
|--cB"
该消息将: