diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java index 28e621136a..156c55c0cb 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java @@ -28,6 +28,7 @@ import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.Executor; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; import org.aopalliance.aop.Advice; @@ -147,6 +148,8 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor private ContainerDelegate proxy = this.delegate; + private final AtomicBoolean logDeclarationException = new AtomicBoolean(true); + private long shutdownTimeout = DEFAULT_SHUTDOWN_TIMEOUT; private ApplicationEventPublisher applicationEventPublisher; @@ -1960,12 +1963,18 @@ protected synchronized void redeclareElementsIfNecessary() { if (!this.lazyLoad && admin != null && isAutoDeclare()) { try { attemptDeclarations(admin); + this.logDeclarationException.set(true); } catch (Exception e) { if (RabbitUtils.isMismatchedQueueArgs(e)) { throw new FatalListenerStartupException("Mismatched queues", e); } - logger.error("Failed to check/redeclare auto-delete queue(s).", e); + if (this.logDeclarationException.getAndSet(false)) { + this.logger.error("Failed to check/redeclare auto-delete queue(s).", e); + } + else { + this.logger.error("Failed to check/redeclare auto-delete queue(s)."); + } } } }