RabbitMQ重新排序消息

dgo*_*sen 9 priority-queue amqp publish-subscribe rabbitmq

RabbitMQ勾选我正在计划的项目的所有方框,保存一个.我会让不同的工作人员在队列中进行监听,并且最重要的是他们首先处理最新的消息(即最新的序列号)(LIFO).

我的应用程序是这样的,新的消息几乎废弃旧消息.如果您有工作人员,您仍然可以处理较旧的消息,但重要的是先完成新的消息.

在浏览各种论坛之后,我只能看到一个解决方案,那就是客户端应首先处理消息:

  • 消费所有消息
  • 根据序列号重新排序
  • 重新提交到队列
  • 消费第一条消息

如果客户中途死亡,那就很丑陋且有问题.但是mabye这里有人有更好的解决方案.

我的研究(部分)基于:

注意:对于某些队列,消息的预期流量大致在1 msg /小时的范围内,而对于其他队列则大约为100 /分钟.所以没什么了不起的.

dgo*_*sen 4

既然没有回复,我想我的作业做得相当好;)

不管怎样,在与其他利益相关者讨论了这些要求之后,我决定暂时放弃 LIFO 要求。当涉及到这一点时,我们可以担心这一点。

我们可能最终采用的一个解决方案是让工作人员打开第二个队列,主设备可以使用该队列让工作人员知道要忽略哪些作业+提供额外的控制/监视信息(看起来我们无论如何都需要)。

实现 AMQP 1.0 规范的 RabbitMQ 也可能对此有所帮助。

所以我现在将这个问题标记为已回答。其他人仍然可以自由地添加或改进。