我使用@RabbitListener注释和SimpleRabbitListenerContainerFactory bean来并行执行rabbitmq消息,并以下列方式设置最小和最大并发消费者:
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setConcurrentConsumers(MIN_RABBIT_CONCURRENT_CONSUMERS);
factory.setMaxConcurrentConsumers(MAX_RABBIT_CONCURRENT_CONSUMERS);
factory.setConsecutiveActiveTrigger(1);
factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
return factory;
}
最小限制为3,最大限制为10.使用此配置,即使队列中有12条消息,也只会并行执行3条消息。
请告诉我配置有什么问题?
答案 0 :(得分:2)
使用默认配置,如果其他消费者仍然忙,则每10秒钟会添加一个新的消费者。
算法(以及影响它的属性)是but it shows this error。
答案 1 :(得分:2)
您可以使用RabbitMQ注释创建最大的并发使用者
@RabbitListener(queues = "your-queue-name", concurrency = "4")
public void customCheck(Object requestObject) {
// process
}