Search code examples
javaspringrabbitmqspring-amqpspring-rabbit

spring rabbit amqp @RabbitListener configure min and max number of consumers


I am using spring amqp rabbit @RabbitListener annotation from : artifact spring-rabbit-1.7.1.RELEASE I wonder if there is a way to configure for each queue the number of consumers ? I have been digging in the documentation and found nothing yet , is there a way to configure in the related container for each queue the number of consumers ? Thanks in advance.


Solution

  • Configure the concurrency via the container factory bean as shown in the documentation.

    @Bean
    public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory());
        factory.setConcurrentConsumers(3);
        factory.setMaxConcurrentConsumers(10);
        return factory;
    }
    

    If you are using Spring Boot, which creates the factory bean for you, you can configure them using properties.

    If you want a fixed number of consumers, just omit the max.

    If you want different settings for each listener, you need a different factory for each set of settings. You would then reference the particular container factory for a @RabbitListener in its containerFactory property.