@Before
 public void declareQueue() {
   CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
   connectionFactory.setChannelCacheSize(concurrentConsumers);
   // connectionFactory.setPort(5673);
   template.setConnectionFactory(connectionFactory);
 }
 @Before
 public void createConnectionFactory() {
   CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
   connectionFactory.setChannelCacheSize(concurrentConsumers);
   connectionFactory.setPort(BrokerTestUtils.getPort());
   template.setConnectionFactory(connectionFactory);
 }
 private RabbitTemplate determineRabbitTemplate(RabbitPropertiesAccessor properties) {
   RabbitTemplate rabbitTemplate = null;
   if (properties.isBatchingEnabled(this.defaultBatchingEnabled)) {
     BatchingStrategy batchingStrategy =
         new SimpleBatchingStrategy(
             properties.getBatchSize(this.defaultBatchSize),
             properties.geteBatchBufferLimit(this.defaultBatchBufferLimit),
             properties.getBatchTimeout(this.defaultBatchTimeout));
     rabbitTemplate =
         new BatchingRabbitTemplate(
             batchingStrategy,
             getApplicationContext()
                 .getBean(IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME, TaskScheduler.class));
     rabbitTemplate.setConnectionFactory(this.connectionFactory);
   }
   if (properties.isCompress(this.defaultCompress)) {
     if (rabbitTemplate == null) {
       rabbitTemplate = new RabbitTemplate(this.connectionFactory);
     }
     rabbitTemplate.setBeforePublishPostProcessors(this.compressingPostProcessor);
     rabbitTemplate.afterPropertiesSet();
   }
   if (rabbitTemplate == null) {
     rabbitTemplate = this.rabbitTemplate;
   }
   return rabbitTemplate;
 }
 @Before
 public void declareQueue() {
   CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
   connectionFactory.setHost("localhost");
   connectionFactory.setChannelCacheSize(concurrentConsumers);
   connectionFactory.setPort(BrokerTestUtils.getPort());
   template.setConnectionFactory(connectionFactory);
 }
 private RabbitTemplate createTemplate(int concurrentConsumers) {
   RabbitTemplate template = new RabbitTemplate();
   CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
   connectionFactory.setHost("localhost");
   connectionFactory.setChannelCacheSize(concurrentConsumers);
   connectionFactory.setPort(BrokerTestUtils.getPort());
   template.setConnectionFactory(connectionFactory);
   if (messageConverter == null) {
     SimpleMessageConverter messageConverter = new SimpleMessageConverter();
     messageConverter.setCreateMessageIds(true);
     this.messageConverter = messageConverter;
   }
   template.setMessageConverter(messageConverter);
   return template;
 }
  private void doTest(int concurrentConsumers, ContainerConfigurer configurer) {
    int messageCount = 10;
    RabbitTemplate template = new RabbitTemplate();
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
    connectionFactory.setHost("localhost");
    connectionFactory.setChannelCacheSize(concurrentConsumers);
    connectionFactory.setPort(BrokerTestUtils.getPort());
    template.setConnectionFactory(connectionFactory);
    SimpleMessageConverter messageConverter = new SimpleMessageConverter();
    messageConverter.setCreateMessageIds(true);
    template.setMessageConverter(messageConverter);
    for (int i = 0; i < messageCount; i++) {
      template.convertAndSend(queue1.getName(), new Integer(i));
      template.convertAndSend(queue2.getName(), new Integer(i));
    }
    final SimpleMessageListenerContainer container =
        new SimpleMessageListenerContainer(connectionFactory);
    final CountDownLatch latch = new CountDownLatch(messageCount * 2);
    PojoListener listener = new PojoListener(latch);
    container.setMessageListener(new MessageListenerAdapter(listener));
    container.setAcknowledgeMode(AcknowledgeMode.AUTO);
    container.setChannelTransacted(true);
    container.setConcurrentConsumers(concurrentConsumers);
    configurer.configure(container);
    container.afterPropertiesSet();
    container.start();
    try {
      int timeout = Math.min(1 + messageCount / concurrentConsumers, 30);
      boolean waited = latch.await(timeout, TimeUnit.SECONDS);
      logger.info("All messages recovered: " + waited);
      assertEquals(concurrentConsumers, container.getActiveConsumerCount());
      assertTrue("Timed out waiting for messages", waited);
    } catch (InterruptedException e) {
      Thread.currentThread().interrupt();
      throw new IllegalStateException("unexpected interruption");
    } finally {
      container.shutdown();
      assertEquals(0, container.getActiveConsumerCount());
    }
    assertNull(template.receiveAndConvert(queue1.getName()));
    assertNull(template.receiveAndConvert(queue2.getName()));

    connectionFactory.destroy();
  }