@Test
 public void testRabbitTemplateRetry() {
   load(
       TestConfiguration.class,
       "spring.rabbitmq.template.retry.enabled:true",
       "spring.rabbitmq.template.retry.maxAttempts:4",
       "spring.rabbitmq.template.retry.initialInterval:2000",
       "spring.rabbitmq.template.retry.multiplier:1.5",
       "spring.rabbitmq.template.retry.maxInterval:5000",
       "spring.rabbitmq.template.receiveTimeout:123",
       "spring.rabbitmq.template.replyTimeout:456");
   RabbitTemplate rabbitTemplate = this.context.getBean(RabbitTemplate.class);
   DirectFieldAccessor dfa = new DirectFieldAccessor(rabbitTemplate);
   assertThat(dfa.getPropertyValue("receiveTimeout")).isEqualTo(123L);
   assertThat(dfa.getPropertyValue("replyTimeout")).isEqualTo(456L);
   RetryTemplate retryTemplate = (RetryTemplate) dfa.getPropertyValue("retryTemplate");
   assertThat(retryTemplate).isNotNull();
   dfa = new DirectFieldAccessor(retryTemplate);
   SimpleRetryPolicy retryPolicy = (SimpleRetryPolicy) dfa.getPropertyValue("retryPolicy");
   ExponentialBackOffPolicy backOffPolicy =
       (ExponentialBackOffPolicy) dfa.getPropertyValue("backOffPolicy");
   assertThat(retryPolicy.getMaxAttempts()).isEqualTo(4);
   assertThat(backOffPolicy.getInitialInterval()).isEqualTo(2000);
   assertThat(backOffPolicy.getMultiplier()).isEqualTo(1.5);
   assertThat(backOffPolicy.getMaxInterval()).isEqualTo(5000);
 }
 @Test
 public void testRabbitListenerContainerFactoryWithCustomSettings() {
   load(
       MessageConvertersConfiguration.class,
       "spring.rabbitmq.listener.retry.enabled:true",
       "spring.rabbitmq.listener.retry.maxAttempts:4",
       "spring.rabbitmq.listener.retry.initialInterval:2000",
       "spring.rabbitmq.listener.retry.multiplier:1.5",
       "spring.rabbitmq.listener.retry.maxInterval:5000",
       "spring.rabbitmq.listener.autoStartup:false",
       "spring.rabbitmq.listener.acknowledgeMode:manual",
       "spring.rabbitmq.listener.concurrency:5",
       "spring.rabbitmq.listener.maxConcurrency:10",
       "spring.rabbitmq.listener.prefetch:40",
       "spring.rabbitmq.listener.defaultRequeueRejected:false",
       "spring.rabbitmq.listener.transactionSize:20");
   SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory =
       this.context.getBean(
           "rabbitListenerContainerFactory", SimpleRabbitListenerContainerFactory.class);
   DirectFieldAccessor dfa = new DirectFieldAccessor(rabbitListenerContainerFactory);
   assertThat(dfa.getPropertyValue("autoStartup")).isEqualTo(Boolean.FALSE);
   assertThat(dfa.getPropertyValue("acknowledgeMode")).isEqualTo(AcknowledgeMode.MANUAL);
   assertThat(dfa.getPropertyValue("concurrentConsumers")).isEqualTo(5);
   assertThat(dfa.getPropertyValue("maxConcurrentConsumers")).isEqualTo(10);
   assertThat(dfa.getPropertyValue("prefetchCount")).isEqualTo(40);
   assertThat(dfa.getPropertyValue("txSize")).isEqualTo(20);
   assertThat(dfa.getPropertyValue("messageConverter"))
       .isSameAs(this.context.getBean("myMessageConverter"));
   assertThat(dfa.getPropertyValue("defaultRequeueRejected")).isEqualTo(Boolean.FALSE);
   Advice[] adviceChain = (Advice[]) dfa.getPropertyValue("adviceChain");
   assertThat(adviceChain).isNotNull();
   assertThat(adviceChain.length).isEqualTo(1);
   dfa = new DirectFieldAccessor(adviceChain[0]);
   RetryTemplate retryTemplate = (RetryTemplate) dfa.getPropertyValue("retryOperations");
   assertThat(retryTemplate).isNotNull();
   dfa = new DirectFieldAccessor(retryTemplate);
   SimpleRetryPolicy retryPolicy = (SimpleRetryPolicy) dfa.getPropertyValue("retryPolicy");
   ExponentialBackOffPolicy backOffPolicy =
       (ExponentialBackOffPolicy) dfa.getPropertyValue("backOffPolicy");
   assertThat(retryPolicy.getMaxAttempts()).isEqualTo(4);
   assertThat(backOffPolicy.getInitialInterval()).isEqualTo(2000);
   assertThat(backOffPolicy.getMultiplier()).isEqualTo(1.5);
   assertThat(backOffPolicy.getMaxInterval()).isEqualTo(5000);
 }