title: Elegant way to add multiple @RabbitListener beans to a ContainerFactory
body: <p>Here is my <code>@Configuration</code></p>
  
  <pre><code>   @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();
      }
  
      @Bean
      public ProcessQueueListener processListener2()
      {
          return new ProcessQueueListener();
      }
  
      @Bean
      public ProcessQueueListener processListener3()
      {
          return new ProcessQueueListener();
      }
  </code></pre>
  
  <p>And here is the <code>@RabbitListener</code> class</p>
  
  <pre><code>@RabbitListener(containerFactory = "rabbitListenerContainerFactory", queues = "process")
  public class ProcessQueueListener
  {
  
      public ProcessQueueListener()
      {
      }
  
      @RabbitHandler
      void receiveMessage(String message)
      {
          // doSomething
      }
  
  } 
  </code></pre>
  
  <p>Only when I instantiate <code>processListener()</code>, <code>processListener2()</code> and <code>processListener3()</code> separately, I start to see multiple consumers in the RabbitMQ Admin for the process Queue, and each listener processing the messages, otherwise I just see only one consumer in spite of specifying <code>setConcurrentConsumers()</code></p>
  
  <p>Is there an elegant way to declare multiple listeners on demand, increase and decrease based on need. Or declaring multiple <code>@Bean</code>s the only option? Or am I doing something wrong?</p>