RabbitMQ多队列消费者(独立消费队列)

TL; DR

是否有任何(Node.JS)模式在一段时间(10秒)后停止使用队列,并closures连接,而不中断消息的处理还没有收到?

更长的版本

我们每天都会向客户发送数百万次推送通知。 生成消息后,我们将它们插入到RabbitMQ中,然后将它们发送给数百个消费者。 通常客户想要几乎同时发送大量的消息,并且如果这些消息进入同一队列,则一个客户的消息将具有另一个客户的消息的处理时间。

我们想要创build一个dynamic的多队列设置,其中一个广告系列的消息正在发送消息。 队列,客户dynamic订阅,处理上千条消息,然后切换到另一个队列。 我们的想法是,我们正在分享我们之间的资源,所以他们将在同一时间并行发送。

我们目前的解决scheme是生成的消息比我们发送出来的要慢,所以它们按照混合顺序插入到队列中。 这不是理想的解决scheme,因为很难find足够慢的速度,但速度并不慢。

我已经尝试创build一个简单的setTimeout,强制消费者在几秒钟后完成消费(Channel#cancel),然后订阅一个队列的消费者最less。 问题是这会中断一些消息的处理。 我已经尝试使用通道#来处理一堆消息(然后select一个不同的队列),但文档说,它是理想的只有几条消息,但不是数百万的消息,使用通道#消耗是好得多性能。

任何想法如何做得好?