This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new a94f67d CAMEL-13267: Enable automatic recovery on camel-rabbitmq in case connection fails for some reason. a94f67d is described below commit a94f67d4f1fb4c70ccd90dff3fb1f93c599b1fa6 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Aug 6 21:12:07 2019 +0200 CAMEL-13267: Enable automatic recovery on camel-rabbitmq in case connection fails for some reason. --- .../src/main/docs/rabbitmq-component.adoc | 2 +- .../camel/component/rabbitmq/RabbitMQEndpoint.java | 7 +- .../dsl/RabbitMQEndpointBuilderFactory.java | 174 ++++++++++----------- 3 files changed, 91 insertions(+), 92 deletions(-) diff --git a/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc b/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc index 28a3d63..52de565 100644 --- a/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc +++ b/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc @@ -136,6 +136,7 @@ with the following path and query parameters: | Name | Description | Default | Type | *addresses* (common) | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 | | Address[] | *autoDelete* (common) | If it is true, the exchange will be deleted when it is no longer in use | true | boolean +| *automaticRecoveryEnabled* (common) | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when existing connection has failures) | true | Boolean | *connectionFactory* (common) | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used | | ConnectionFactory | *deadLetterExchange* (common) | The name of the dead letter exchange | | String | *deadLetterExchangeType* (common) | The type of the dead letter exchange | direct | String @@ -176,7 +177,6 @@ with the following path and query parameters: | *publisherAcknowledgements* (producer) | When true, the message will be published with publisher acknowledgements turned on | false | boolean | *publisherAcknowledgements Timeout* (producer) | The amount of time in milliseconds to wait for a basic.ack response from RabbitMQ server | | long | *args* (advanced) | Specify arguments for configuring the different RabbitMQ concepts, a different prefix is required for each: Exchange: arg.exchange. Queue: arg.queue. Binding: arg.binding. For example to declare a queue with message ttl argument: \http://localhost:5672/exchange/queueargs=arg.queue.x-message-ttl=60000 | | Map -| *automaticRecoveryEnabled* (advanced) | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when connection shutdown is not initiated by the application) | | Boolean | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean | *clientProperties* (advanced) | Connection client properties (client info used in negotiating with the server) | | Map | *connectionTimeout* (advanced) | Connection timeout | 60000 | int diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java index 39ed17d..56c01f9 100644 --- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java +++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java @@ -102,6 +102,8 @@ public class RabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint { private boolean skipExchangeDeclare; @UriParam(label = "common") private Address[] addresses; + @UriParam(label = "common", defaultValue = "true") + private Boolean automaticRecoveryEnabled = Boolean.TRUE; @UriParam(label = "advanced", defaultValue = "" + ConnectionFactory.DEFAULT_CONNECTION_TIMEOUT) private int connectionTimeout = ConnectionFactory.DEFAULT_CONNECTION_TIMEOUT; @UriParam(label = "advanced", defaultValue = "" + ConnectionFactory.DEFAULT_CHANNEL_MAX) @@ -116,8 +118,6 @@ public class RabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint { private TrustManager trustManager; @UriParam(label = "advanced") private Map<String, Object> clientProperties; - @UriParam(label = "advanced") - private Boolean automaticRecoveryEnabled; @UriParam(label = "advanced", defaultValue = "5000") private Integer networkRecoveryInterval = 5000; @UriParam(label = "advanced") @@ -567,8 +567,7 @@ public class RabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint { /** * Enables connection automatic recovery (uses connection implementation - * that performs automatic recovery when connection shutdown is not - * initiated by the application) + * that performs automatic recovery when existing connection has failures) */ public void setAutomaticRecoveryEnabled(Boolean automaticRecoveryEnabled) { this.automaticRecoveryEnabled = automaticRecoveryEnabled; diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/RabbitMQEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/RabbitMQEndpointBuilderFactory.java index fceec23..2007b1f 100644 --- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/RabbitMQEndpointBuilderFactory.java +++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/RabbitMQEndpointBuilderFactory.java @@ -95,6 +95,35 @@ public interface RabbitMQEndpointBuilderFactory { return this; } /** + * Enables connection automatic recovery (uses connection implementation + * that performs automatic recovery when existing connection has + * failures). + * + * The option is a: <code>java.lang.Boolean</code> type. + * + * Group: common + */ + default RabbitMQEndpointConsumerBuilder automaticRecoveryEnabled( + Boolean automaticRecoveryEnabled) { + setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); + return this; + } + /** + * Enables connection automatic recovery (uses connection implementation + * that performs automatic recovery when existing connection has + * failures). + * + * The option will be converted to a <code>java.lang.Boolean</code> + * type. + * + * Group: common + */ + default RabbitMQEndpointConsumerBuilder automaticRecoveryEnabled( + String automaticRecoveryEnabled) { + setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); + return this; + } + /** * To use a custom RabbitMQ connection factory. When this option is set, * all connection options (connectionTimeout, requestedChannelMax...) * set on URI are not used. @@ -836,35 +865,6 @@ public interface RabbitMQEndpointBuilderFactory { return this; } /** - * Enables connection automatic recovery (uses connection implementation - * that performs automatic recovery when connection shutdown is not - * initiated by the application). - * - * The option is a: <code>java.lang.Boolean</code> type. - * - * Group: advanced - */ - default AdvancedRabbitMQEndpointConsumerBuilder automaticRecoveryEnabled( - Boolean automaticRecoveryEnabled) { - setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); - return this; - } - /** - * Enables connection automatic recovery (uses connection implementation - * that performs automatic recovery when connection shutdown is not - * initiated by the application). - * - * The option will be converted to a <code>java.lang.Boolean</code> - * type. - * - * Group: advanced - */ - default AdvancedRabbitMQEndpointConsumerBuilder automaticRecoveryEnabled( - String automaticRecoveryEnabled) { - setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); - return this; - } - /** * Whether the endpoint should use basic property binding (Camel 2.x) or * the newer property binding with additional capabilities. * @@ -1234,6 +1234,35 @@ public interface RabbitMQEndpointBuilderFactory { return this; } /** + * Enables connection automatic recovery (uses connection implementation + * that performs automatic recovery when existing connection has + * failures). + * + * The option is a: <code>java.lang.Boolean</code> type. + * + * Group: common + */ + default RabbitMQEndpointProducerBuilder automaticRecoveryEnabled( + Boolean automaticRecoveryEnabled) { + setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); + return this; + } + /** + * Enables connection automatic recovery (uses connection implementation + * that performs automatic recovery when existing connection has + * failures). + * + * The option will be converted to a <code>java.lang.Boolean</code> + * type. + * + * Group: common + */ + default RabbitMQEndpointProducerBuilder automaticRecoveryEnabled( + String automaticRecoveryEnabled) { + setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); + return this; + } + /** * To use a custom RabbitMQ connection factory. When this option is set, * all connection options (connectionTimeout, requestedChannelMax...) * set on URI are not used. @@ -1955,35 +1984,6 @@ public interface RabbitMQEndpointBuilderFactory { return this; } /** - * Enables connection automatic recovery (uses connection implementation - * that performs automatic recovery when connection shutdown is not - * initiated by the application). - * - * The option is a: <code>java.lang.Boolean</code> type. - * - * Group: advanced - */ - default AdvancedRabbitMQEndpointProducerBuilder automaticRecoveryEnabled( - Boolean automaticRecoveryEnabled) { - setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); - return this; - } - /** - * Enables connection automatic recovery (uses connection implementation - * that performs automatic recovery when connection shutdown is not - * initiated by the application). - * - * The option will be converted to a <code>java.lang.Boolean</code> - * type. - * - * Group: advanced - */ - default AdvancedRabbitMQEndpointProducerBuilder automaticRecoveryEnabled( - String automaticRecoveryEnabled) { - setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); - return this; - } - /** * Whether the endpoint should use basic property binding (Camel 2.x) or * the newer property binding with additional capabilities. * @@ -2353,6 +2353,35 @@ public interface RabbitMQEndpointBuilderFactory { return this; } /** + * Enables connection automatic recovery (uses connection implementation + * that performs automatic recovery when existing connection has + * failures). + * + * The option is a: <code>java.lang.Boolean</code> type. + * + * Group: common + */ + default RabbitMQEndpointBuilder automaticRecoveryEnabled( + Boolean automaticRecoveryEnabled) { + setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); + return this; + } + /** + * Enables connection automatic recovery (uses connection implementation + * that performs automatic recovery when existing connection has + * failures). + * + * The option will be converted to a <code>java.lang.Boolean</code> + * type. + * + * Group: common + */ + default RabbitMQEndpointBuilder automaticRecoveryEnabled( + String automaticRecoveryEnabled) { + setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); + return this; + } + /** * To use a custom RabbitMQ connection factory. When this option is set, * all connection options (connectionTimeout, requestedChannelMax...) * set on URI are not used. @@ -2785,35 +2814,6 @@ public interface RabbitMQEndpointBuilderFactory { return this; } /** - * Enables connection automatic recovery (uses connection implementation - * that performs automatic recovery when connection shutdown is not - * initiated by the application). - * - * The option is a: <code>java.lang.Boolean</code> type. - * - * Group: advanced - */ - default AdvancedRabbitMQEndpointBuilder automaticRecoveryEnabled( - Boolean automaticRecoveryEnabled) { - setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); - return this; - } - /** - * Enables connection automatic recovery (uses connection implementation - * that performs automatic recovery when connection shutdown is not - * initiated by the application). - * - * The option will be converted to a <code>java.lang.Boolean</code> - * type. - * - * Group: advanced - */ - default AdvancedRabbitMQEndpointBuilder automaticRecoveryEnabled( - String automaticRecoveryEnabled) { - setProperty("automaticRecoveryEnabled", automaticRecoveryEnabled); - return this; - } - /** * Whether the endpoint should use basic property binding (Camel 2.x) or * the newer property binding with additional capabilities. *