From 0dca5bcdedafa680e7fe654cfa97591ac23b3f8f Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Tue, 23 Oct 2018 14:14:52 -0400 Subject: [PATCH] GH-833: Add container configurer callback Resolves https://github.com/spring-projects/spring-amqp/issues/833 Allow setting any properties not directly exposed by the factory. --- ...bstractRabbitListenerContainerFactory.java | 28 +++++++++++++++++-- .../RabbitListenerContainerFactoryTests.java | 2 ++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerContainerFactory.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerContainerFactory.java index 143daf45..7c606ac7 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerContainerFactory.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerContainerFactory.java @@ -19,6 +19,7 @@ package org.springframework.amqp.rabbit.config; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Consumer; import org.aopalliance.aop.Advice; import org.apache.commons.logging.Log; @@ -64,6 +65,8 @@ public abstract class AbstractRabbitListenerContainerFactory recoveryCallback; - protected final AtomicInteger counter = new AtomicInteger(); + private Consumer containerConfigurer; /** * @param connectionFactory The connection factory. @@ -328,6 +331,16 @@ public abstract class AbstractRabbitListenerContainerFactory configurer) { + this.containerConfigurer = configurer; + } + @SuppressWarnings("deprecation") @Override public C createListenerContainer(RabbitListenerEndpoint endpoint) { @@ -340,8 +353,13 @@ public abstract class AbstractRabbitListenerContainerFactory c.setShutdownTimeout(10_000)); assertArrayEquals(new Advice[] {advice}, this.factory.getAdviceChain()); @@ -131,6 +132,7 @@ public class RabbitListenerContainerFactoryTests { assertEquals(6, fieldAccessor.getPropertyValue("consecutiveIdleTrigger")); assertEquals(3, fieldAccessor.getPropertyValue("prefetchCount")); assertEquals(1500L, fieldAccessor.getPropertyValue("receiveTimeout")); + assertEquals(10_000L, fieldAccessor.getPropertyValue("shutdownTimeout")); assertEquals(false, fieldAccessor.getPropertyValue("defaultRequeueRejected")); Advice[] actualAdviceChain = (Advice[]) fieldAccessor.getPropertyValue("adviceChain"); assertEquals("Wrong number of advice", 1, actualAdviceChain.length);