首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现能够消费多种产品的消费者的竞争消费者?

如何实现能够消费多种产品的消费者的竞争消费者?
EN

Stack Overflow用户
提问于 2019-02-22 14:33:52
回答 1查看 195关注 0票数 0

我想使用RabbitMQ实现竞争消费者,我有两个(或更多)消费者:

消费者1可以使用“红色”和“蓝色”类型的消息。

消费者2可以使用“红色”和“黑色”类型的信息。

现在,我希望使用竞争的使用者模式在消费者之间进行负载平衡(可能还有更多具有相同配置的消费者实例),并且我希望保持消息排序“松散”完整(我不需要完美的排序,但希望从2小时前开始处理消息,而不是2分钟前的消息)。

示例:我想以以下方式处理以下消息:

  • 蓝色:消费者1
  • 黑色:消费者2
  • 红色:先完成处理的消费者(假设消费者1)
  • 1000万条红色信息:两个消费者都将争夺并处理这些消息。
  • 100万条蓝色消息:只有在完成所有1000万条红色之后,消费者1才应该开始处理蓝色消息
  • 100万条红色消息:只有在消费者1完成蓝色消息之后,它才应该开始处理新的红色消息,因为消费者2没有黑色消息,所以它可以立即开始处理红色消息。

有任何方法可以使用RabbitMQ来实现这一点吗?如果我只是为每种消息类型创建一个队列,就无法确保消息的排序。

如果RabbitMQ不是适合这项工作的工具,那么是否有更合适的工具呢?

EN

回答 1

Stack Overflow用户

发布于 2019-02-28 05:37:47

您可以使用priority queue来解决这个问题。通过对red消息赋予更高的优先级,您的consumers将首先获取red消息。当不再留下red消息时,您的consumers将开始使用blue消息。

在使用priority queue时,请确保保持较低的basic.qos值。这允许在队列中对消息进行优先级排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54829362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档