我现在正在搜索有关如何在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中编码答案 0 :(得分:0)
根据github page of the plugin上的示例,您只需将x-delay
值设置为1(我认为它不能为零)。也就是说,如果你发送延迟为X的消息M1和消息M2,延迟为Y,那么Y <0。 X消息M2将在M1之前传送到队列。
此外,如果您希望立即发送消息(所以不要像您在示例中所写的那样在下两个消息之间),您可以简单地使用另一个&#34; classic&#34;直接exchnage(没有任何延迟)。