From e7e77cbb86bbe4acb9e183fab704cd4fc6909095 Mon Sep 17 00:00:00 2001 From: Jonathan Philip Knoblauch Date: Fri, 29 Jul 2016 13:50:30 +0200 Subject: [PATCH 1/5] Extended method signature to allow to set a error handler and created the default one as bean Signed-off-by: Jonathan Philip Knoblauch --- .../hawkbit/amqp/AmqpConfiguration.java | 20 +++++++++++++++++-- ...gurableRabbitListenerContainerFactory.java | 4 +++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java index 11f892654..bee9b2364 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java @@ -26,6 +26,7 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler; import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; @@ -37,7 +38,8 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.retry.backoff.ExponentialBackOffPolicy; -import org.springframework.retry.support.RetryTemplate;; +import org.springframework.retry.support.RetryTemplate; +import org.springframework.util.ErrorHandler;; /** * The spring AMQP configuration which is enabled by using the profile @@ -58,6 +60,9 @@ public class AmqpConfiguration { @Autowired private ConnectionFactory rabbitConnectionFactory; + @Autowired + private ErrorHandler errorHandler; + @Configuration @ConditionalOnMissingBean(ConnectionFactory.class) protected static class RabbitConnectionFactoryCreator { @@ -269,7 +274,7 @@ public class AmqpConfiguration { */ @Bean(name = { "listenerContainerFactory" }) public RabbitListenerContainerFactory listenerContainerFactory() { - return new ConfigurableRabbitListenerContainerFactory(amqpProperties, rabbitConnectionFactory); + return new ConfigurableRabbitListenerContainerFactory(amqpProperties, rabbitConnectionFactory, errorHandler); } private static Map getTTLMaxArgsAuthenticationQueue() { @@ -279,4 +284,15 @@ public class AmqpConfiguration { return args; } + /** + * Create default error handler bean. + * + * @return the default error handler bean + */ + @Bean + @ConditionalOnMissingBean + public ErrorHandler errorHandler() { + return new ConditionalRejectingErrorHandler(); + } + } diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java index 14e6f8fcb..e792db696 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java @@ -12,6 +12,7 @@ import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFacto import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; +import org.springframework.util.ErrorHandler; /** * {@link RabbitListenerContainerFactory} that can be configured through @@ -30,8 +31,9 @@ public class ConfigurableRabbitListenerContainerFactory extends SimpleRabbitList * to configure the container factory */ public ConfigurableRabbitListenerContainerFactory(final AmqpProperties amqpProperties, - final ConnectionFactory rabbitConnectionFactory) { + final ConnectionFactory rabbitConnectionFactory, final ErrorHandler errorHandler) { this.amqpProperties = amqpProperties; + setErrorHandler(errorHandler); setDefaultRequeueRejected(true); setConnectionFactory(rabbitConnectionFactory); setMissingQueuesFatal(amqpProperties.isMissingQueuesFatal()); From 87dc8b8964da8b2437db11cf7eb3b96c8cf86ebf Mon Sep 17 00:00:00 2001 From: Jonathan Philip Knoblauch Date: Mon, 1 Aug 2016 10:38:28 +0200 Subject: [PATCH 2/5] Set the errorHandler as parameter in method Signed-off-by: Jonathan Philip Knoblauch --- .../java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java index bee9b2364..9979e9a90 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java @@ -60,8 +60,8 @@ public class AmqpConfiguration { @Autowired private ConnectionFactory rabbitConnectionFactory; - @Autowired - private ErrorHandler errorHandler; + // @Autowired + // private ErrorHandler errorHandler; @Configuration @ConditionalOnMissingBean(ConnectionFactory.class) @@ -273,7 +273,8 @@ public class AmqpConfiguration { * AMQP messages */ @Bean(name = { "listenerContainerFactory" }) - public RabbitListenerContainerFactory listenerContainerFactory() { + public RabbitListenerContainerFactory listenerContainerFactory( + final ErrorHandler errorHandler) { return new ConfigurableRabbitListenerContainerFactory(amqpProperties, rabbitConnectionFactory, errorHandler); } From 1a1d3746df58762c1a4c2813d3b632089e03a8a4 Mon Sep 17 00:00:00 2001 From: Jonathan Philip Knoblauch Date: Mon, 1 Aug 2016 10:47:36 +0200 Subject: [PATCH 3/5] Moved errorHandler to to autoconfig Signed-off-by: Jonathan Philip Knoblauch --- .../autoconfigure/amqp/AmqpAutoConfiguration.java | 15 +++++++++++++++ .../eclipse/hawkbit/amqp/AmqpConfiguration.java | 12 ------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/amqp/AmqpAutoConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/amqp/AmqpAutoConfiguration.java index 681e485fc..3e1f48c27 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/amqp/AmqpAutoConfiguration.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/amqp/AmqpAutoConfiguration.java @@ -10,8 +10,12 @@ package org.eclipse.hawkbit.autoconfigure.amqp; import org.eclipse.hawkbit.amqp.AmqpConfiguration; import org.eclipse.hawkbit.amqp.annotation.EnableAmqp; +import org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.util.ErrorHandler; /** * The amqp autoconfiguration. @@ -24,4 +28,15 @@ import org.springframework.context.annotation.Configuration; @EnableAmqp public class AmqpAutoConfiguration { + /** + * Create default error handler bean. + * + * @return the default error handler bean + */ + @Bean + @ConditionalOnMissingBean + public ErrorHandler errorHandler() { + return new ConditionalRejectingErrorHandler(); + } + } diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java index 9979e9a90..5e5530f9d 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java @@ -26,7 +26,6 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler; import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; @@ -285,15 +284,4 @@ public class AmqpConfiguration { return args; } - /** - * Create default error handler bean. - * - * @return the default error handler bean - */ - @Bean - @ConditionalOnMissingBean - public ErrorHandler errorHandler() { - return new ConditionalRejectingErrorHandler(); - } - } From de375fe1835c0e38fca03fd2440a2a25e733c8a7 Mon Sep 17 00:00:00 2001 From: Jonathan Philip Knoblauch Date: Mon, 1 Aug 2016 10:51:36 +0200 Subject: [PATCH 4/5] Updated javadoc Signed-off-by: Jonathan Philip Knoblauch --- .../main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java | 4 +++- .../amqp/ConfigurableRabbitListenerContainerFactory.java | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java index 5e5530f9d..d15336eb6 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java @@ -267,7 +267,9 @@ public class AmqpConfiguration { /** * Returns the Listener factory. - * + * + * @param errorHandler + * the error hander * @return the {@link SimpleMessageListenerContainer} that gets used receive * AMQP messages */ diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java index e792db696..b213e744b 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java @@ -29,6 +29,8 @@ public class ConfigurableRabbitListenerContainerFactory extends SimpleRabbitList * for the container factory * @param amqpProperties * to configure the container factory + * @param errorHandler + * the error handler which should be use */ public ConfigurableRabbitListenerContainerFactory(final AmqpProperties amqpProperties, final ConnectionFactory rabbitConnectionFactory, final ErrorHandler errorHandler) { From 4462d0aad96465e92842cb1f28d91bd7e6c17343 Mon Sep 17 00:00:00 2001 From: Jonathan Philip Knoblauch Date: Mon, 1 Aug 2016 11:15:52 +0200 Subject: [PATCH 5/5] Refactoring for configuration Signed-off-by: Jonathan Philip Knoblauch --- .../java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java index d15336eb6..bcac6a6e5 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java @@ -38,7 +38,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.retry.backoff.ExponentialBackOffPolicy; import org.springframework.retry.support.RetryTemplate; -import org.springframework.util.ErrorHandler;; +import org.springframework.util.ErrorHandler; /** * The spring AMQP configuration which is enabled by using the profile @@ -59,9 +59,6 @@ public class AmqpConfiguration { @Autowired private ConnectionFactory rabbitConnectionFactory; - // @Autowired - // private ErrorHandler errorHandler; - @Configuration @ConditionalOnMissingBean(ConnectionFactory.class) protected static class RabbitConnectionFactoryCreator {