这是我的@Configuration
@Bean
public AmqpAdmin amqpAdmin()
{
RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory());
DirectExchange dirExchange = new DirectExchange("evtExchange", true,
false);
rabbitAdmin.declareExchange(dirExchange);
rabbitAdmin.declareQueue(processQueue);
Binding processBinding = BindingBuilder.bind(processQueue)
.to(dirExchange).with("rkey.process");
rabbitAdmin.declareBinding(processBinding);
return rabbitAdmin;
}
@Bean
public RabbitTemplate rabbitTemplate()
{
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory());
return rabbitTemplate;
}
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory()
{
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
SimpleMessageListenerContainer container = factory
.createListenerContainer();
factory.setConcurrentConsumers(50);
factory.setMaxConcurrentConsumers(100);
container.setStartConsumerMinInterval(3000);
container.setQueues(processQueue);
factory.setAdviceChain(retryInterceptor());
return factory;
}
@Bean
public RetryOperationsInterceptor retryInterceptor()
{
return RetryInterceptorBuilder.stateless().maxAttempts(5)
.backOffOptions(1000, 2.0, 10000).recoverer(new RejectAndDontRequeueRecoverer()).build();
}
@Bean
public ProcessQueueListener processListener()
{
return new ProcessQueueListener();
}
只有当我单独实例化时processListener(),processListener2()我才processListener3()开始在 RabbitMQ Admin 中看到进程队列的多个消费者,并且每个侦听器都在处理消息,否则我只看到一个消费者,尽管指定了setConcurrentConsumers()
有没有一种优雅的方式来按需声明多个监听器,根据需要增加和减少。或者声明多个@Beans 是唯一的选择?还是我做错了什么?
达令说
相关分类