TL; DR
是否有任何(Node.JS)模式在一段时间(10秒)后停止使用队列,并且关闭连接而不中断消息处理尚未确定?
更长版本
我们每天都会向客户发送数百万次推送通知。生成消息后,我们将它们插入RabbitMQ,然后将其发送给数百名消费者。通常,客户希望几乎同时发送大量消息,如果这些消息进入同一队列,则一个客户的消息将具有其他客户消息的处理时间。
我们希望创建一个动态多队列设置,其中广告系列的消息将转到消息中。队列,客户动态订阅,处理数千条消息,然后切换到另一个队列。我们的想法是,我们在广告系列之间共享资源,因此它们将同时发送。
我们当前的解决方案是生成比我们发送消息更慢的消息,因此它们以混合顺序插入队列。这不是理想的解决方案,因为很难找到足够慢但速度不慢的东西。
我尝试创建一个简单的setTimeout,并在几秒钟后强制消费者完成消费(Channel#cancel),然后订阅队列的消费者最少。问题是这会中断某些消息的处理。我已经尝试使用Channel#get来处理一堆消息(然后选择一个不同的队列),但文档说它只适用于少数消息,但不适用于数百万条消息,使用Channel#消费更好性能
任何想法如何做得好?