【发布时间】:2015-07-30 14:58:47
【问题描述】:
我有 3 个使用 RabbitMQ 的应用程序 A、B 和 C,其中我有队列 Q1 和 Q2。
应用程序 A 在 Q1 中发布消息。
应用程序 B 使用来自 Q1 的消息,进行一些处理,并在 Q2 中发布其他消息。 B 仅在 Q2 成功发布消息后才确认来自 Q1 的消息。
应用程序 C 使用来自 Q2 的消息,进行一些处理并将某些内容写入数据库。
如果应用 A 发布的速度快于 B 的消耗速度,它最终会填满 RabbitMQ 服务器的内存或磁盘,will block any clients that try to publish messages。
B 在确认来自 Q1 的消息之前被阻止发布到 Q2,从而导致死锁。
如果我可以限制每个队列而不是整个 RabbitMQ 的内存和磁盘使用量,我认为这可以解决。 有没有办法做到这一点,或者其他方式来解决我的问题?
如果需要,我可以切换到另一个支持此类功能的消息代理。
【问题讨论】: