RabbitMQ重新排序消息

标签 rabbitmq publish-subscribe priority-queue amqp

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

我的应用程序使得较新的消息几乎已经淘汰了较旧的消息。如果您有空余的工作人员,您仍然可以处理较旧的消息,但重要的是要先处理较新的消息。

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

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

  • 如果客户中途死亡,则很丑陋且成问题。但是,再见有人在这里有更好的解决方案。

    我的研究(部分)基于:
  • http://groups.google.com/group/rabbitmq-discuss/browse_thread/thread/e79e77d86bc7a3b8?fwc=1
  • http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2010-July/007934.html
  • http://groups.google.com/group/rabbitmq-discuss/browse_thread/thread/e40d1069dcebe2cc
  • http://old.nabble.com/Priority-Queue-implementation-and-performance-td29946348.html

  • 注意:对于某些队列,预期的消息通信量将大致在1毫秒/小时的范围内,而对于其他队列,则在100/分钟的范围内。所以没有恒星。

    最佳答案

    由于没有回复,我想我做得很好;)

    无论如何,在与其他利益相关者讨论了需求之后,我决定现在可以放弃LIFO需求。当涉及到这一点时,我们可以为此担心。

    我们可能最终会采用的解决方案是,让工作人员打开第二个队列,主服务器可以使用该队列让工作人员知道要忽略的作业,并提供其他控制/监视信息(无论如何我们都需要)。

    实现AMQP 1.0规范的RabbitMQ在这里也可能会有所帮助。

    因此,我现在将此问题标记为已回答。仍有其他人可以自由添加或改进。

    关于RabbitMQ重新排序消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971437/

    相关文章:

    publish-subscribe - NATS 请求回复 - 它是如何工作的?

    javascript - Angular 模块 : event bus or mediator pattern/service 中的全局通信

    dart - 如何实现Dart优先级队列(降序排列)

    RabbitMQ - 按优先级使用多个队列

    heroku - 使用rabbitmqadmin访问CloudAMQP/Heroku

    c - Julia 的消息处理程序

    android - 谷歌云消息与 RabbitMQ

    python - zeromq pub/sub with multipart 不工作

    带有自定义比较器的 Java PriorityQueue

    mysql - MySQL 中的极低优先级 SELECT 查询