RabbitMQ旋转单个活动消费者

l3zydbqr  于 2023-08-05  发布在  RabbitMQ
关注(0)|答案(1)|浏览(151)

RabbitMQ文档对此并不清楚(因为这可能是不可能的),因此我的问题是:
我有大量的队列,所有队列都启用了单个活动消费者。现在,我有多个消费者应用程序示例在运行。我 * 希望 * 单个活动消费者将在我的消费者应用程序上轮换,但不幸的是,第一个出现的示例是我所有队列的活动消费者。其他示例只是空闲的。
是否有可能在启用SAC的情况下将所有队列的负载分布到所有示例上?

aurhwmvo

aurhwmvo1#

不幸的是,RabbitMQ似乎没有内置的东西来实现这一点。我通过向应用程序的每个示例传递两个环境变量来解决这个问题。假设我的应用程序有4个并行运行的示例,每个示例都获得环境变量INSTANCE_CNT = 4和INSTANCE_IDX = 0到INSTANCE_IDX = 3。
初始化队列时,我确保队列是有序的。每个示例初始化所有不存在的队列,但只将侦听器绑定到queue_idx % INSTANCE_CNT == INSTANCE_IDX所在的每个队列。这里,queue_idx是我的所有队列列表中的队列的idx。这样,示例0将监听队列0、4、8、12、16、...、示例1到1、5、9、13、15、...等等。
不是最好的解决方案,但它有效。

相关问题