RabbitMQ X延迟插件:如何访问交换中的处理数据?

时间:2016-10-27 14:28:09

标签: rabbitmq amqp

我现在正在搜索有关如何在RabbitMQ交换中检索信息的几个小时。

让我解释一下我的目标:

我设计了一个系统来避免在我的应用程序中烧毁gmail API调用限制(每秒)。为此我设置了一个cron,它在一小时内缩放发送:基本上我在我的cron中定义了一个延迟,然后将我的数据推送到一个延迟队列,该队列本身绑定到x-delayed-exchanger(类型直接)。这部分工作得很好。

此外,我有一个消费者从我的队列中消费和发送电子邮件。它也很完美。

我的问题来自:我的用户需要尽快发送一些手动操作。那么,我想检索几条下一条延迟的消息,这些消息将从我的延迟交换发送到队列,并将这条新消息放在下一条延迟消息的两条消息之间:

举个例子: my-delayed-exchange有[message1: will be published in 3000ms, message2: will be published in 6000ms]:我希望以这样的方式插入messageToSendAsap: will be published in 4500ms],以确保我控制自己的API限制。

有没有人听说过实现这个目标的方法?

提前谢谢你 PS:我使用amqp lib

在NodeJS中编码

1 个答案:

答案 0 :(得分:0)

根据github page of the plugin上的示例,您只需将x-delay值设置为1(我认为它不能为零)。也就是说,如果你发送延迟为X的消息M1和消息M2,延迟为Y,那么Y <0。 X消息M2将在M1之前传送到队列。

此外,如果您希望立即发送消息(所以不要像您在示例中所写的那样在下两个消息之间),您可以简单地使用另一个&#34; classic&#34;直接exchnage(没有任何延迟)。