我目前正在为一个跟踪系统实施rabbitMQ,其中多个前端生产者在同一队列上写作。
基本上我有两种类型的消息在队列中发送,因为跟踪工作流程有两个步骤:impression / click =>铅/销售。 这很简单:用户点击横幅,然后在他被重定向到的网站上执行操作。此操作可能需要几秒钟到几天才能完成。 我需要在相应的impresison或点击后消耗铅或销售。
问题是我需要按时间顺序消费消息。如果所有生产者以相同的速度在队列中发送消息(即,消息应以FIFO方式正确排序),一切都应该是好的,当生产者中的一个(由于某种原因)写入队列较慢时,我会遇到问题。
例如,如果我的主要操作在点击操作后一秒钟发生,并且点击生成器停止了几秒钟,我将在点击之前消耗线索并且我的跟踪系统将无法工作。
我想知道如何根据附加到邮件的标头设置队列的顺序。 我的所有服务器都是同步的,它们的时钟差别小于1ns,所以我想根据这些信息订购我的队列,但我无法在doc中的任何地方找到设置队列顺序或消耗顺序的方法。 / p>
感谢您的帮助。
答案 0 :(得分:5)
AMQP队列是FIFO队列。在高数字同时发布消息的情况下,可能会有一些含糊不清的消息首先出现,因此您可能希望消息one
和消息two
在队列中的顺序与现实世界中的顺序不同。这是你为HA和速度付出的代价。如果您想了解更多信息,可以在IRC rabbitmq频道上提问。
答案 1 :(得分:0)
我认为队列意味着队列,即先进先出。 Mabe你可以在消费期间对它们进行分类吗?我的意思是你从队列中获取10条消息,解析它们,并按照正确的顺序将它们放到你自己的队列或列表中。