3

我目前正在为一个跟踪系统实现rabbitMQ,多个前端生产者在同一个队列上写入。

基本上我有两种类型的消息在队列中发送,因为跟踪工作流程有两个步骤:印象/点击 => 潜在客户/销售。非常简单:用户单击横幅,然后在他被重定向到的网站上执行操作。此操作可能需要几秒钟到几天才能完成。我需要在相应的印象或点击后消耗潜在客户或销售。

问题是我需要按时间顺序使用消息。虽然如果所有生产者以相同的速度在队列中发送消息(即消息应该以 FIFO 方式正确排序),那么一切都应该很好,但当其中一个生产者(出于某种原因)在队列中写入速度较慢时,我会遇到问题。

例如,如果我的潜在客户操作发生在点击操作之后一秒钟,而点击生产者停止了几秒钟,我将在点击之前消耗潜在客户,我的跟踪系统将无法工作。

我想知道如何根据附加到消息的标题设置队列的顺序。我所有的服务器都是同步的,它们的时钟有 <1ns 的差异,所以我想根据这些信息订购我的队列,但我在文档中找不到任何设置队列顺序或消费顺序的方法。

谢谢你的帮助。

4

2 回答 2

10

AMQP 队列是 FIFO 队列。在同时发布大量消息的情况下,哪个消息先出现可能存在一些歧义,因此您可能会认为消息one和消息two在队列中的顺序可能与现实世界中发生的顺序不同。这是您为 HA 和速度付出的代价。如果您想了解更多信息,可以在 IRC rabbitmq 频道上提问。

于 2013-07-12T11:26:01.280 回答
0

我认为队列的意思是队列,即先进先出。Mabe你可以在消费过程中对它们进行分类吗?我的意思是,例如,您从队列中提取 10 条消息,对其进行解析,然后以正确的顺序将它们放入您自己的队列或列表中。

于 2013-03-19T12:00:54.727 回答