在SimpleMessageListenerContainer上使用addQueueNames需要更多时间

时间:2016-07-26 19:32:26

标签: rabbitmq spring-amqp consumer spring-rabbitmq

我们使用SimpleMessageListenerContainer,其中(max)使用者计数为75.我们有一个用例,我们需要从某些队列动态订阅和取消订阅,因此我们使用addQueueNames()和removeQueueNames()。当消费者计数为75时,addQueueNames()方法需要大约15秒才能完成。我们目前有大约200个队列。我们想经常在侦听器中添加和删除队列,那么我们还有其他方法可以缩短这段时间吗?

1 个答案:

答案 0 :(得分:0)

当添加或删除队列时,我们必须取消当前的消费者并从新的队列列表中重新消费。

该功能并非真正设计用于快速更改队列列表,尤其是对于大量类似的队列。

如果您使用多个容器(每个容器都包含总队列列表的子集),您可能会发现性能更高一些,以避免为每次更改而招致所有消费者。

对于2.0(明年,但我们可能在秋季有一个里程碑),我们计划完全重写监听器容器,以利用rabbitmq客户端库中的一些更改see this answer以及associated JIRA issue获取更多信息。

作为重写的一部分,我们可以更有效地改变队列列表;随时向JIRA添加评论,以便我们不要忘记。