动态更改并发消费者-RabbitMQ



我正在使用SimpleRabbitElstenerFactory,并试图动态减少/增加无法实现的汇总。任何人都可以帮助我吗?谢谢你

代码如下:

SimpleRabbitListenerContainerFactory factory;
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory()
{
 factory=new SimpleRabbitListenerContainerFactory();
 factory.setConnectionFactory(this.connectionFactory);
 changeConsumers(2);
 return factory;
}
public void changeConsumers(int minConsumers)
{
 factory.setConcurrentConsumers(2);
}

***In another package***

if(messageCount>6000)
  changeConsumers(5);

当消息计数是morethan 6000时,它将进入变更杂志的方法,但消费者没有更改为5。

在应用程序初始化期间使用工厂来创建侦听器容器对象;以后更改其属性不会更改其已经创建的容器上的属性。

您必须自行更改容器上的属性。

您可以使用RabbitListenerEndpointRegistry bean访问容器;调用getListenerContainers并迭代它们(或使用其id获取单独的容器(。

MessageListenerContainer施加到SimpleMessageListenerContainer以更改其属性。