Spring Boot中的RabbitMQ并发消费者

4

我正在使用@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条消息。

请告诉我这个配置有什么问题?

2个回答

7

您可以使用RabbitMQ注释创建最大并发消费者

@RabbitListener(queues = "your-queue-name", concurrency = "4")
public void customCheck(Object requestObject) {
    // process
}

每次调用该方法时,都可以更改并发性吗? - S Khandelwal
S Khandelwal,它会增加到你添加的并发数量。它不会消耗超过给定并发数的请求。 - Vinit Jordan

6

在默认配置下,如果其他的消费者仍然忙碌,每隔10秒钟就会添加一个新的消费者。

算法(以及影响它的属性)在此处进行了描述。


1
文档已移至 https://docs.spring.io/spring-amqp/reference/#listener-concurrency - jnodorp
1
谢谢,链接已修复。 - Gary Russell
1
不要在一年前的答案上提出新问题。是的,它与Spring AMQP一起标准提供。如果您需要更多信息,请提出新问题。 - Gary Russell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接