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;
     }
 

Reply via email to