diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/EnableRabbit.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/EnableRabbit.java index 8b81dd70..91f8a6a1 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/EnableRabbit.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/EnableRabbit.java @@ -26,7 +26,7 @@ import org.springframework.context.annotation.Import; /** * Enable Rabbit listener annotated endpoints that are created under the cover - * by a {@link org.springframework.amqp.rabbit.config.RabbitListenerContainerFactory + * by a {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory * RabbitListenerContainerFactory}. To be used on * {@link org.springframework.context.annotation.Configuration Configuration} * classes as follows: @@ -98,7 +98,7 @@ import org.springframework.context.annotation.Import; * * Note that the created containers are not registered against the application context * but can be easily located for management purposes using the - * {@link org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistry RabbitListenerEndpointRegistry}. + * {@link org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry RabbitListenerEndpointRegistry}. * *
Annotated methods can use flexible signature; in particular, it is possible to use * the {@link org.springframework.messaging.Message Message} abstraction and related annotations, @@ -118,7 +118,7 @@ import org.springframework.context.annotation.Import; * *
When more control is desired, a {@code @Configuration} class may implement * {@link RabbitListenerConfigurer}. This allows access to the underlying - * {@link org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistrar RabbitListenerEndpointRegistrar} + * {@link org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar RabbitListenerEndpointRegistrar} * instance. The following example demonstrates how to specify an explicit default * {@code RabbitListenerContainerFactory} * @@ -159,7 +159,7 @@ import org.springframework.context.annotation.Import; * * } * - * It is also possible to specify a custom {@link org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistry + * It is also possible to specify a custom {@link org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry * RabbitListenerEndpointRegistry} in case you need more control on the way the containers * are created and managed. The example below also demonstrates how to customize the * {@code RabbitHandlerMethodFactory} to use with a custom {@link org.springframework.validation.Validator @@ -255,8 +255,8 @@ import org.springframework.context.annotation.Import; * @since 1.4 * @see RabbitListener * @see RabbitListenerAnnotationBeanPostProcessor - * @see org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistrar - * @see org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistry + * @see org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar + * @see org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitBootstrapConfiguration.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitBootstrapConfiguration.java index 7f9daf3d..34c9f19f 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitBootstrapConfiguration.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitBootstrapConfiguration.java @@ -17,7 +17,7 @@ package org.springframework.amqp.rabbit.annotation; import org.springframework.amqp.rabbit.config.RabbitListenerConfigUtils; -import org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistry; +import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListener.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListener.java index 29f3581d..45b04942 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListener.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListener.java @@ -27,7 +27,7 @@ import org.springframework.messaging.handler.annotation.MessageMapping; /** * Annotation that marks a method to be the target of a Rabbit message * listener on the specified {@link #queues()}. The {@link #containerFactory()} - * identifies the {@link org.springframework.amqp.rabbit.config.RabbitListenerContainerFactory + * identifies the {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory * RabbitListenerContainerFactory} to use to build the rabbit listener container. If not * set, a default container factory is assumed to be available with a bean * name of {@code rabbitListenerContainerFactory} unless an explicit default has been @@ -82,15 +82,15 @@ public @interface RabbitListener { * The unique identifier of the container managing for this endpoint. *
If none is specified an auto-generated one is provided. * @return the {@code id} for the container managing for this endpoint. - * @see org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistry#getListenerContainer(String) + * @see org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry#getListenerContainer(String) */ String id() default ""; /** - * The bean name of the {@link org.springframework.amqp.rabbit.config.RabbitListenerContainerFactory} + * The bean name of the {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory} * to use to create the message listener container responsible to serve this endpoint. *
If not specified, the default container factory is used, if any. - * @return the {@link org.springframework.amqp.rabbit.config.RabbitListenerContainerFactory} + * @return the {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory} * bean name. */ String containerFactory() default ""; diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerAnnotationBeanPostProcessor.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerAnnotationBeanPostProcessor.java index 76bd7834..fa3fe263 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerAnnotationBeanPostProcessor.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerAnnotationBeanPostProcessor.java @@ -20,12 +20,12 @@ import java.lang.reflect.Method; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import org.springframework.amqp.rabbit.config.MethodRabbitListenerEndpoint; import org.springframework.amqp.rabbit.config.RabbitListenerConfigUtils; -import org.springframework.amqp.rabbit.config.RabbitListenerContainerFactory; -import org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistrar; -import org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistry; import org.springframework.amqp.rabbit.core.RabbitAdmin; +import org.springframework.amqp.rabbit.listener.MethodRabbitListenerEndpoint; +import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory; +import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar; +import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry; import org.springframework.aop.support.AopUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; @@ -48,7 +48,7 @@ import org.springframework.util.StringUtils; /** * Bean post-processor that registers methods annotated with {@link RabbitListener} * to be invoked by a AMQP message listener container created under the cover - * by a {@link org.springframework.amqp.rabbit.config.RabbitListenerContainerFactory} + * by a {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory} * according to the parameters of the annotation. * *
Annotated methods can use flexible arguments as defined by {@link RabbitListener}.
@@ -70,14 +70,14 @@ import org.springframework.util.StringUtils;
* @see RabbitListenerConfigurer
* @see RabbitListenerEndpointRegistrar
* @see RabbitListenerEndpointRegistry
- * @see org.springframework.amqp.rabbit.config.RabbitListenerEndpoint
+ * @see org.springframework.amqp.rabbit.listener.RabbitListenerEndpoint
* @see MethodRabbitListenerEndpoint
*/
public class RabbitListenerAnnotationBeanPostProcessor
implements BeanPostProcessor, Ordered, BeanFactoryAware, SmartInitializingSingleton {
/**
- * The bean name of the default {@link org.springframework.amqp.rabbit.config.RabbitListenerContainerFactory}.
+ * The bean name of the default {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory}.
*/
static final String DEFAULT_RABBIT_LISTENER_CONTAINER_FACTORY_BEAN_NAME = "rabbitListenerContainerFactory";
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerConfigurer.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerConfigurer.java
index 6a0f15fa..38f2ecb3 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerConfigurer.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/annotation/RabbitListenerConfigurer.java
@@ -17,13 +17,13 @@
package org.springframework.amqp.rabbit.annotation;
-import org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistrar;
+import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar;
/**
* Optional interface to be implemented by Spring managed bean willing
* to customize how Rabbit listener endpoints are configured. Typically
* used to defined the default
- * {@link org.springframework.amqp.rabbit.config.RabbitListenerContainerFactory
+ * {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory
* RabbitListenerContainerFactory} to use or for registering Rabbit endpoints
* in a programmatic fashion as opposed to the declarative
* approach of using the @{@link RabbitListener} annotation.
@@ -33,16 +33,16 @@ import org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistrar;
* @author Stephane Nicoll
* @since 1.4
* @see EnableRabbit
- * @see org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistrar
+ * @see org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar
*/
public interface RabbitListenerConfigurer {
/**
- * Callback allowing a {@link org.springframework.amqp.rabbit.config.RabbitListenerEndpointRegistry
- * RabbitListenerEndpointRegistry} and specific {@link org.springframework.amqp.rabbit.config.RabbitListenerEndpoint
+ * Callback allowing a {@link org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry
+ * RabbitListenerEndpointRegistry} and specific {@link org.springframework.amqp.rabbit.listener.RabbitListenerEndpoint
* RabbitListenerEndpoint} instances to be registered against the given
* {@link RabbitListenerEndpointRegistrar}. The default
- * {@link org.springframework.amqp.rabbit.config.RabbitListenerContainerFactory RabbitListenerContainerFactory}
+ * {@link org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory RabbitListenerContainerFactory}
* can also be customized.
* @param registrar the registrar to be configured
*/
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 2c104b08..d66f1bee 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
@@ -25,6 +25,8 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.amqp.core.AcknowledgeMode;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer;
+import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory;
+import org.springframework.amqp.rabbit.listener.RabbitListenerEndpoint;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.util.ErrorHandler;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AnnotationDrivenParser.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AnnotationDrivenParser.java
index 11b6acbc..25eec6cf 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AnnotationDrivenParser.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AnnotationDrivenParser.java
@@ -19,6 +19,7 @@ package org.springframework.amqp.rabbit.config;
import org.w3c.dom.Element;
import org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor;
+import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanDefinitionHolder;
import org.springframework.beans.factory.parsing.BeanComponentDefinition;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerContainerFactory.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerContainerFactory.java
index 56972f3b..74190c59 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerContainerFactory.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerContainerFactory.java
@@ -20,6 +20,7 @@ import java.util.concurrent.Executor;
import org.aopalliance.aop.Advice;
+import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.transaction.PlatformTransactionManager;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerEndpoint.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerEndpoint.java
index c737ba8f..01d238f8 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerEndpoint.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/SimpleRabbitListenerEndpoint.java
@@ -18,7 +18,9 @@ package org.springframework.amqp.rabbit.config;
import org.springframework.amqp.core.MessageListener;
+import org.springframework.amqp.rabbit.listener.AbstractRabbitListenerEndpoint;
import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
+import org.springframework.amqp.rabbit.listener.RabbitListenerEndpoint;
/**
* A {@link RabbitListenerEndpoint} simply providing the {@link MessageListener} to
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatefulRetryOperationsInterceptorFactoryBean.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatefulRetryOperationsInterceptorFactoryBean.java
index a10c6cb0..50754203 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatefulRetryOperationsInterceptorFactoryBean.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/StatefulRetryOperationsInterceptorFactoryBean.java
@@ -14,9 +14,10 @@ package org.springframework.amqp.rabbit.config;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.springframework.amqp.ImmediateAcknowledgeAmqpException;
import org.springframework.amqp.core.Message;
-import org.springframework.amqp.rabbit.listener.FatalListenerExecutionException;
+import org.springframework.amqp.rabbit.listener.exception.FatalListenerExecutionException;
import org.springframework.amqp.rabbit.retry.MessageKeyGenerator;
import org.springframework.amqp.rabbit.retry.MessageRecoverer;
import org.springframework.amqp.rabbit.retry.NewMessageIdentifier;
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 51c874fe..9e91f69f 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
@@ -33,6 +33,8 @@ import org.springframework.amqp.rabbit.connection.RabbitAccessor;
import org.springframework.amqp.rabbit.connection.RabbitResourceHolder;
import org.springframework.amqp.rabbit.connection.RabbitUtils;
import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;
+import org.springframework.amqp.rabbit.listener.exception.FatalListenerExecutionException;
+import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerEndpoint.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractRabbitListenerEndpoint.java
similarity index 96%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerEndpoint.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractRabbitListenerEndpoint.java
index 421c6ec5..0a5c47ab 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/AbstractRabbitListenerEndpoint.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractRabbitListenerEndpoint.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.amqp.rabbit.config;
+package org.springframework.amqp.rabbit.listener;
import java.util.ArrayList;
import java.util.Arrays;
@@ -24,9 +24,8 @@ import java.util.Map;
import org.springframework.amqp.core.MessageListener;
import org.springframework.amqp.core.Queue;
+import org.springframework.amqp.rabbit.config.SimpleRabbitListenerEndpoint;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
-import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
-import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.util.Assert;
/**
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumer.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumer.java
index f7a6e050..2856255d 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumer.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumer.java
@@ -43,6 +43,8 @@ import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils;
import org.springframework.amqp.rabbit.connection.RabbitResourceHolder;
import org.springframework.amqp.rabbit.connection.RabbitUtils;
+import org.springframework.amqp.rabbit.listener.exception.ConsumerCancelledException;
+import org.springframework.amqp.rabbit.listener.exception.FatalListenerStartupException;
import org.springframework.amqp.rabbit.support.MessagePropertiesConverter;
import org.springframework.amqp.rabbit.support.RabbitExceptionTranslator;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ConditionalRejectingErrorHandler.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ConditionalRejectingErrorHandler.java
index e7427bb5..d1a4f04a 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ConditionalRejectingErrorHandler.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ConditionalRejectingErrorHandler.java
@@ -19,6 +19,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
+import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException;
import org.springframework.amqp.support.converter.MessageConversionException;
import org.springframework.util.ErrorHandler;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/MethodRabbitListenerEndpoint.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/MethodRabbitListenerEndpoint.java
similarity index 97%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/MethodRabbitListenerEndpoint.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/MethodRabbitListenerEndpoint.java
index 196d073e..043a2ce5 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/MethodRabbitListenerEndpoint.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/MethodRabbitListenerEndpoint.java
@@ -14,13 +14,12 @@
* limitations under the License.
*/
-package org.springframework.amqp.rabbit.config;
+package org.springframework.amqp.rabbit.listener;
import java.lang.reflect.Method;
import java.util.Arrays;
import org.springframework.amqp.core.Address;
-import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
import org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.core.annotation.AnnotationUtils;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/QueuesNotAvailableException.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/QueuesNotAvailableException.java
index a888a652..4ce86662 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/QueuesNotAvailableException.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/QueuesNotAvailableException.java
@@ -15,6 +15,8 @@
*/
package org.springframework.amqp.rabbit.listener;
+import org.springframework.amqp.rabbit.listener.exception.FatalListenerStartupException;
+
/**
* This exception indicates that a consumer could not be started because none of
* its queues are available for listening.
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerContainerFactory.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerContainerFactory.java
similarity index 90%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerContainerFactory.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerContainerFactory.java
index 1c492bd7..70826c24 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerContainerFactory.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerContainerFactory.java
@@ -14,10 +14,9 @@
* limitations under the License.
*/
-package org.springframework.amqp.rabbit.config;
+package org.springframework.amqp.rabbit.listener;
-import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
/**
* Factory of {@link MessageListenerContainer} based on a
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerEndpoint.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpoint.java
similarity index 93%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerEndpoint.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpoint.java
index 5744a491..ceacc297 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerEndpoint.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpoint.java
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-package org.springframework.amqp.rabbit.config;
+package org.springframework.amqp.rabbit.listener;
-import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
/**
* Model for a Rabbit listener endpoint. Can be used against a
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerEndpointRegistrar.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistrar.java
similarity index 99%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerEndpointRegistrar.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistrar.java
index 77e5ae8d..dd42208a 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerEndpointRegistrar.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistrar.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.amqp.rabbit.config;
+package org.springframework.amqp.rabbit.listener;
import java.util.ArrayList;
import java.util.List;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerEndpointRegistry.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistry.java
similarity index 98%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerEndpointRegistry.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistry.java
index 68f62c51..fd0a7977 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RabbitListenerEndpointRegistry.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/RabbitListenerEndpointRegistry.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.amqp.rabbit.config;
+package org.springframework.amqp.rabbit.listener;
import java.util.Collection;
import java.util.Collections;
@@ -25,7 +25,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainer.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainer.java
index 4f81d319..3a4b3256 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainer.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainer.java
@@ -45,6 +45,10 @@ import org.springframework.amqp.rabbit.connection.ConsumerChannelRegistry;
import org.springframework.amqp.rabbit.connection.RabbitResourceHolder;
import org.springframework.amqp.rabbit.connection.RabbitUtils;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
+import org.springframework.amqp.rabbit.listener.exception.ConsumerCancelledException;
+import org.springframework.amqp.rabbit.listener.exception.FatalListenerExecutionException;
+import org.springframework.amqp.rabbit.listener.exception.FatalListenerStartupException;
+import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException;
import org.springframework.amqp.rabbit.support.DefaultMessagePropertiesConverter;
import org.springframework.amqp.rabbit.support.MessagePropertiesConverter;
import org.springframework.aop.Pointcut;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapter.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapter.java
index 16f387f9..b80710f9 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapter.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapter.java
@@ -25,7 +25,7 @@ import org.springframework.amqp.AmqpIllegalStateException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;
-import org.springframework.amqp.rabbit.listener.ListenerExecutionFailedException;
+import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.amqp.support.converter.SimpleMessageConverter;
import org.springframework.util.Assert;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapter.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapter.java
index 949085b6..652d4bd2 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapter.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessagingMessageListenerAdapter.java
@@ -17,7 +17,7 @@
package org.springframework.amqp.rabbit.listener.adapter;
import org.springframework.amqp.core.MessageProperties;
-import org.springframework.amqp.rabbit.listener.ListenerExecutionFailedException;
+import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException;
import org.springframework.amqp.support.AmqpHeaderMapper;
import org.springframework.amqp.support.converter.MessageConversionException;
import org.springframework.amqp.support.converter.MessageConverter;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ConsumerCancelledException.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/ConsumerCancelledException.java
similarity index 93%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ConsumerCancelledException.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/ConsumerCancelledException.java
index 4936c43f..bc3d6f6e 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ConsumerCancelledException.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/ConsumerCancelledException.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.amqp.rabbit.listener;
+package org.springframework.amqp.rabbit.listener.exception;
/**
* Thrown when the broker cancels the consumer and the message
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/FatalListenerExecutionException.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/FatalListenerExecutionException.java
similarity index 95%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/FatalListenerExecutionException.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/FatalListenerExecutionException.java
index 689849f5..2d9e638c 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/FatalListenerExecutionException.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/FatalListenerExecutionException.java
@@ -11,7 +11,7 @@
* specific language governing permissions and limitations under the License.
*/
-package org.springframework.amqp.rabbit.listener;
+package org.springframework.amqp.rabbit.listener.exception;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/FatalListenerStartupException.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/FatalListenerStartupException.java
similarity index 95%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/FatalListenerStartupException.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/FatalListenerStartupException.java
index 784c00dc..268f7382 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/FatalListenerStartupException.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/FatalListenerStartupException.java
@@ -11,7 +11,7 @@
* specific language governing permissions and limitations under the License.
*/
-package org.springframework.amqp.rabbit.listener;
+package org.springframework.amqp.rabbit.listener.exception;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ListenerExecutionFailedException.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/ListenerExecutionFailedException.java
similarity index 96%
rename from spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ListenerExecutionFailedException.java
rename to spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/ListenerExecutionFailedException.java
index b4efdf64..98b514b5 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/ListenerExecutionFailedException.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/ListenerExecutionFailedException.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.amqp.rabbit.listener;
+package org.springframework.amqp.rabbit.listener.exception;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.Message;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/package-info.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/package-info.java
new file mode 100644
index 00000000..fec8061a
--- /dev/null
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/exception/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Provides classes for listener exceptions.
+ */
+package org.springframework.amqp.rabbit.listener.exception;
\ No newline at end of file
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/retry/MissingMessageIdAdvice.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/retry/MissingMessageIdAdvice.java
index ac2431ff..31780475 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/retry/MissingMessageIdAdvice.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/retry/MissingMessageIdAdvice.java
@@ -25,7 +25,7 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageProperties;
-import org.springframework.amqp.rabbit.listener.ListenerExecutionFailedException;
+import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException;
import org.springframework.retry.policy.RetryContextCache;
import org.springframework.util.Assert;
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/retry/RejectAndDontRequeueRecoverer.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/retry/RejectAndDontRequeueRecoverer.java
index 05229c1d..56cd37f3 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/retry/RejectAndDontRequeueRecoverer.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/retry/RejectAndDontRequeueRecoverer.java
@@ -20,7 +20,7 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
import org.springframework.amqp.core.Message;
-import org.springframework.amqp.rabbit.listener.ListenerExecutionFailedException;
+import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException;
/**
* MessageRecover that causes the listener container to reject
diff --git a/spring-rabbit/src/main/resources/org/springframework/amqp/rabbit/config/spring-rabbit-1.4.xsd b/spring-rabbit/src/main/resources/org/springframework/amqp/rabbit/config/spring-rabbit-1.4.xsd
index 69abae80..b5e4136e 100644
--- a/spring-rabbit/src/main/resources/org/springframework/amqp/rabbit/config/spring-rabbit-1.4.xsd
+++ b/spring-rabbit/src/main/resources/org/springframework/amqp/rabbit/config/spring-rabbit-1.4.xsd
@@ -409,13 +409,13 @@