This is an automated email from the ASF dual-hosted git repository. tcunning pushed a commit to branch spring-boot-4.0 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 251dbd5cccbaa740b29f1d26e6ca7c34fa8c8874 Author: Tom Cunningham <[email protected]> AuthorDate: Mon Nov 24 10:17:28 2025 -0500 spring-amqp changes upgrading to 4.0.0 --- .../springrabbit/SpringRabbitMQComponentConfigurer.java | 4 ++-- .../springrabbit/SpringRabbitMQEndpointConfigurer.java | 4 ++-- .../apache/camel/component/springrabbit/spring-rabbitmq.json | 4 ++-- .../springrabbit/DefaultListenerContainerFactory.java | 12 ++++-------- .../component/springrabbit/SpringRabbitMQComponent.java | 8 ++++---- .../camel/component/springrabbit/SpringRabbitMQEndpoint.java | 8 ++++---- 6 files changed, 18 insertions(+), 22 deletions(-) diff --git a/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/java/org/apache/camel/component/springrabbit/SpringRabbitMQComponentConfigurer.java b/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/java/org/apache/camel/component/springrabbit/SpringRabbitMQComponentConfigurer.java index 79d264124ec7..782e28245b80 100644 --- a/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/java/org/apache/camel/component/springrabbit/SpringRabbitMQComponentConfigurer.java +++ b/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/java/org/apache/camel/component/springrabbit/SpringRabbitMQComponentConfigurer.java @@ -76,7 +76,7 @@ public class SpringRabbitMQComponentConfigurer extends PropertyConfigurerSupport case "rejectAndDontRequeue": target.setRejectAndDontRequeue(property(camelContext, boolean.class, value)); return true; case "replytimeout": case "replyTimeout": target.setReplyTimeout(property(camelContext, java.time.Duration.class, value).toMillis()); return true; - case "retry": target.setRetry(property(camelContext, org.springframework.retry.interceptor.RetryOperationsInterceptor.class, value)); return true; + case "retry": target.setRetry(property(camelContext, org.springframework.amqp.rabbit.config.StatelessRetryOperationsInterceptor.class, value)); return true; case "retrydelay": case "retryDelay": target.setRetryDelay(property(camelContext, int.class, value)); return true; case "shutdowntimeout": @@ -148,7 +148,7 @@ public class SpringRabbitMQComponentConfigurer extends PropertyConfigurerSupport case "rejectAndDontRequeue": return boolean.class; case "replytimeout": case "replyTimeout": return long.class; - case "retry": return org.springframework.retry.interceptor.RetryOperationsInterceptor.class; + case "retry": return org.springframework.amqp.rabbit.config.StatelessRetryOperationsInterceptor.class; case "retrydelay": case "retryDelay": return int.class; case "shutdowntimeout": diff --git a/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpointConfigurer.java b/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpointConfigurer.java index b3e860738c8a..61ba0d4a09ef 100644 --- a/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpointConfigurer.java +++ b/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpointConfigurer.java @@ -83,7 +83,7 @@ public class SpringRabbitMQEndpointConfigurer extends PropertyConfigurerSupport case "rejectAndDontRequeue": target.setRejectAndDontRequeue(property(camelContext, boolean.class, value)); return true; case "replytimeout": case "replyTimeout": target.setReplyTimeout(property(camelContext, java.time.Duration.class, value).toMillis()); return true; - case "retry": target.setRetry(property(camelContext, org.springframework.retry.interceptor.RetryOperationsInterceptor.class, value)); return true; + case "retry": target.setRetry(property(camelContext, org.springframework.amqp.rabbit.config.StatelessRetryOperationsInterceptor.class, value)); return true; case "retrydelay": case "retryDelay": target.setRetryDelay(property(camelContext, int.class, value)); return true; case "routingkey": @@ -166,7 +166,7 @@ public class SpringRabbitMQEndpointConfigurer extends PropertyConfigurerSupport case "rejectAndDontRequeue": return boolean.class; case "replytimeout": case "replyTimeout": return long.class; - case "retry": return org.springframework.retry.interceptor.RetryOperationsInterceptor.class; + case "retry": return org.springframework.amqp.rabbit.config.StatelessRetryOperationsInterceptor.class; case "retrydelay": case "retryDelay": return int.class; case "routingkey": diff --git a/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/resources/META-INF/org/apache/camel/component/springrabbit/spring-rabbitmq.json b/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/resources/META-INF/org/apache/camel/component/springrabbit/spring-rabbitmq.json index 4bd2fbc072d9..a85291a14ae9 100644 --- a/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/resources/META-INF/org/apache/camel/component/springrabbit/spring-rabbitmq.json +++ b/components/camel-spring-parent/camel-spring-rabbitmq/src/generated/resources/META-INF/org/apache/camel/component/springrabbit/spring-rabbitmq.json @@ -43,7 +43,7 @@ "maxConcurrentConsumers": { "index": 16, "kind": "property", "displayName": "Max Concurrent Consumers", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "description": "The maximum number of consumers (available only with SMLC)" }, "messageListenerContainerType": { "index": 17, "kind": "property", "displayName": "Message Listener Container Type", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "DMLC", "SMLC" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "DMLC", "description": "The type of the MessageListenerContainer" }, "prefetchCount": { "index": 18, "kind": "property", "displayName": "Prefetch Count", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 250, "description": "Tell the broker how many messages to send to each consumer in a single request. Often this can be set quite high to improve throughput." }, - "retry": { "index": 19, "kind": "property", "displayName": "Retry", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.springframework.retry.interceptor.RetryOperationsInterceptor", "deprecated": false, "autowired": false, "secret": false, "description": "Custom retry configuration to use. If this is configured then the other settings such as maximumRetryAttempts for retry are not in use." }, + "retry": { "index": 19, "kind": "property", "displayName": "Retry", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.springframework.amqp.rabbit.config.StatelessRetryOperationsInterceptor", "deprecated": false, "autowired": false, "secret": false, "description": "Custom retry configuration to use. If this is configured then the other settings such as maximumRetryAttempts for retry are not in use." }, "shutdownTimeout": { "index": 20, "kind": "property", "displayName": "Shutdown Timeout", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "duration", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "5000", "description": "The time to wait for workers in milliseconds after the container is stopped. If any workers are active when the shutdown signal comes they will be allowed to finish processing as l [...] "allowNullBody": { "index": 21, "kind": "property", "displayName": "Allow Null Body", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to allow sending messages with no body. If this option is false and the message body is null, then an MessageConversionException is thrown." }, "autoDeclareProducer": { "index": 22, "kind": "property", "displayName": "Auto Declare Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether the producer should auto declare binding between exchange, queue and routing key when starting. Enabling this can be good for development to make it easy to standup exchang [...] @@ -106,7 +106,7 @@ "maxConcurrentConsumers": { "index": 24, "kind": "parameter", "displayName": "Max Concurrent Consumers", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "description": "The maximum number of consumers (available only with SMLC)" }, "messageListenerContainerType": { "index": 25, "kind": "parameter", "displayName": "Message Listener Container Type", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "DMLC", "SMLC" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "DMLC", "description": "The type of the MessageListenerContainer" }, "prefetchCount": { "index": 26, "kind": "parameter", "displayName": "Prefetch Count", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "description": "Tell the broker how many messages to send in a single request. Often this can be set quite high to improve throughput." }, - "retry": { "index": 27, "kind": "parameter", "displayName": "Retry", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.springframework.retry.interceptor.RetryOperationsInterceptor", "deprecated": false, "autowired": false, "secret": false, "description": "Custom retry configuration to use. If this is configured then the other settings such as maximumRetryAttempts for retry are not in use." }, + "retry": { "index": 27, "kind": "parameter", "displayName": "Retry", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.springframework.amqp.rabbit.config.StatelessRetryOperationsInterceptor", "deprecated": false, "autowired": false, "secret": false, "description": "Custom retry configuration to use. If this is configured then the other settings such as maximumRetryAttempts for retry are not in use." }, "allowNullBody": { "index": 28, "kind": "parameter", "displayName": "Allow Null Body", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to allow sending messages with no body. If this option is false and the message body is null, then an MessageConversionException is thrown." }, "autoDeclareProducer": { "index": 29, "kind": "parameter", "displayName": "Auto Declare Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Specifies whether the producer should auto declare binding between exchange, queue and routing key when starting." }, "confirm": { "index": 30, "kind": "parameter", "displayName": "Confirm", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "auto", "enabled", "disabled" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "auto", "description": "Controls whether to wait for confirms. The connection factory must be configured for publisher confirms and this method. auto = Camel detects if the connection facto [...] diff --git a/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/DefaultListenerContainerFactory.java b/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/DefaultListenerContainerFactory.java index ee92c6e03c1c..449dc9d3f682 100644 --- a/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/DefaultListenerContainerFactory.java +++ b/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/DefaultListenerContainerFactory.java @@ -21,9 +21,7 @@ import org.springframework.amqp.rabbit.config.RetryInterceptorBuilder; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer; import org.springframework.amqp.rabbit.retry.RejectAndDontRequeueRecoverer; -import org.springframework.retry.backoff.FixedBackOffPolicy; -import org.springframework.retry.policy.NeverRetryPolicy; -import org.springframework.retry.policy.SimpleRetryPolicy; +import org.springframework.core.retry.RetryPolicy; import static org.apache.camel.component.springrabbit.SpringRabbitMQConstants.*; @@ -72,14 +70,12 @@ public class DefaultListenerContainerFactory implements ListenerContainerFactory } else { RetryInterceptorBuilder<?, ?> builder = RetryInterceptorBuilder.stateless(); if (endpoint.getMaximumRetryAttempts() <= 0) { - builder.retryPolicy(new NeverRetryPolicy()); + builder.retryPolicy(RetryPolicy.withMaxRetries(0)); } else if (endpoint.getMaximumRetryAttempts() > 0) { - builder.retryPolicy(new SimpleRetryPolicy(endpoint.getMaximumRetryAttempts())); + builder.retryPolicy(RetryPolicy.withMaxRetries(endpoint.getMaximumRetryAttempts())); } if (endpoint.getRetryDelay() > 0) { - FixedBackOffPolicy delay = new FixedBackOffPolicy(); - delay.setBackOffPeriod(endpoint.getRetryDelay()); - builder.backOffPolicy(delay); + builder.backOffOptions(endpoint.getRetryDelay(), 1, endpoint.getRetryDelay()); } if (endpoint.isRejectAndDontRequeue()) { builder.recoverer(new RejectAndDontRequeueRecoverer()); diff --git a/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQComponent.java b/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQComponent.java index 9610ef00e6ed..14304e099685 100644 --- a/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQComponent.java +++ b/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQComponent.java @@ -25,9 +25,9 @@ import org.apache.camel.spi.annotations.Component; import org.apache.camel.support.HeaderFilterStrategyComponent; import org.apache.camel.util.PropertiesHelper; import org.springframework.amqp.core.AmqpAdmin; +import org.springframework.amqp.rabbit.config.StatelessRetryOperationsInterceptor; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.support.converter.MessageConverter; -import org.springframework.retry.interceptor.RetryOperationsInterceptor; import org.springframework.util.ErrorHandler; import static org.apache.camel.component.springrabbit.SpringRabbitMQConstants.DIRECT_MESSAGE_LISTENER_CONTAINER; @@ -104,7 +104,7 @@ public class SpringRabbitMQComponent extends HeaderFilterStrategyComponent { private Integer maxConcurrentConsumers; @Metadata(label = "consumer,advanced", description = "Custom retry configuration to use. " + "If this is configured then the other settings such as maximumRetryAttempts for retry are not in use.") - private RetryOperationsInterceptor retry; + private StatelessRetryOperationsInterceptor retry; @Metadata(label = "consumer", defaultValue = "5", description = "How many times a Rabbitmq consumer will retry the same message if Camel failed to process the message") private int maximumRetryAttempts = 5; @@ -345,11 +345,11 @@ public class SpringRabbitMQComponent extends HeaderFilterStrategyComponent { this.maxConcurrentConsumers = maxConcurrentConsumers; } - public RetryOperationsInterceptor getRetry() { + public StatelessRetryOperationsInterceptor getRetry() { return retry; } - public void setRetry(RetryOperationsInterceptor retry) { + public void setRetry(StatelessRetryOperationsInterceptor retry) { this.retry = retry; } diff --git a/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java b/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java index e1ecac82520f..65c3f7d8041c 100644 --- a/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java +++ b/components/camel-spring-parent/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java @@ -43,11 +43,11 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.QueueBuilder; import org.springframework.amqp.rabbit.AsyncRabbitTemplate; +import org.springframework.amqp.rabbit.config.StatelessRetryOperationsInterceptor; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer; import org.springframework.amqp.support.converter.MessageConverter; -import org.springframework.retry.interceptor.RetryOperationsInterceptor; import static org.apache.camel.component.springrabbit.SpringRabbitMQConstants.DIRECT_MESSAGE_LISTENER_CONTAINER; @@ -192,7 +192,7 @@ public class SpringRabbitMQEndpoint extends DefaultEndpoint implements AsyncEndp private Integer maxConcurrentConsumers; @UriParam(label = "consumer,advanced", description = "Custom retry configuration to use. " + "If this is configured then the other settings such as maximumRetryAttempts for retry are not in use.") - private RetryOperationsInterceptor retry; + private StatelessRetryOperationsInterceptor retry; @UriParam(label = "consumer", defaultValue = "5", description = "How many times a Rabbitmq consumer will try the same message if Camel failed to process the message (The number of attempts includes the initial try)") private int maximumRetryAttempts = 5; @@ -520,11 +520,11 @@ public class SpringRabbitMQEndpoint extends DefaultEndpoint implements AsyncEndp this.maxConcurrentConsumers = maxConcurrentConsumers; } - public RetryOperationsInterceptor getRetry() { + public StatelessRetryOperationsInterceptor getRetry() { return retry; } - public void setRetry(RetryOperationsInterceptor retry) { + public void setRetry(StatelessRetryOperationsInterceptor retry) { this.retry = retry; }
