diff --git a/build.gradle b/build.gradle
index 0d9c361a26..549db8eadc 100644
--- a/build.gradle
+++ b/build.gradle
@@ -56,7 +56,7 @@ ext {
rabbitmqVersion = '5.27.1'
reactorVersion = '2025.0.1-SNAPSHOT'
springDataVersion = '2025.1.0-SNAPSHOT'
- springVersion = '7.0.0-RC1'
+ springVersion = '7.0.0-SNAPSHOT'
testcontainersVersion = '2.0.1'
javaProjects = subprojects - project(':spring-amqp-bom')
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilder.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilder.java
index 6daf7c06a1..96d7b43ff9 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilder.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilder.java
@@ -40,7 +40,7 @@
*
* StatefulRetryOperationsInterceptor interceptor =
* RetryInterceptorBuilder.stateful()
- * .maxAttempts(5)
+ * .maxRetries(5)
* .backOffOptions(1, 2, 10) // initialInterval, multiplier, maxInterval
* .build();
*
@@ -127,13 +127,13 @@ public B configureRetryPolicy(Consumer retryPolicy) {
}
/**
- * Apply the max attempts - a SimpleRetryPolicy will be used. Cannot be used if a custom retry operations
+ * Apply the max retries - a SimpleRetryPolicy will be used. Cannot be used if a custom retry operations
* or retry policy has been set.
- * @param maxAttempts the max attempts.
+ * @param maxRetries the maximum number of retry attempts..
* @return this.
*/
- public B maxAttempts(int maxAttempts) {
- return configureRetryPolicy((retryPolicy) -> retryPolicy.maxAttempts(maxAttempts));
+ public B maxRetries(int maxRetries) {
+ return configureRetryPolicy((retryPolicy) -> retryPolicy.maxRetries(maxRetries));
}
/**
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitAdmin.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitAdmin.java
index 77924dd77f..9c190f199e 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitAdmin.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitAdmin.java
@@ -90,7 +90,7 @@ public class RabbitAdmin implements AmqpAdmin, ApplicationContextAware, Applicat
private static final String UNUSED = "unused";
- private static final int DECLARE_MAX_ATTEMPTS = 5;
+ private static final int DECLARE_MAX_RETRIES = 5;
private static final Duration DECLARE_INITIAL_RETRY_DELAY = Duration.ofSeconds(1);
@@ -597,7 +597,7 @@ public void afterPropertiesSet() {
if (this.retryTemplate == null && !this.retryDisabled) {
RetryPolicy retryPolicy =
RetryPolicy.builder()
- .maxAttempts(DECLARE_MAX_ATTEMPTS)
+ .maxRetries(DECLARE_MAX_RETRIES)
.delay(DECLARE_INITIAL_RETRY_DELAY)
.multiplier(DECLARE_RETRY_MULTIPLIER)
.maxDelay(DECLARE_MAX_RETRY_DELAY)
diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j2/AmqpAppender.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j2/AmqpAppender.java
index 813d46c96e..4bac6349ce 100644
--- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j2/AmqpAppender.java
+++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/log4j2/AmqpAppender.java
@@ -181,7 +181,7 @@ private void startSenders() {
}
}
else if (this.manager.maxSenderRetries > 0) {
- this.rabbitTemplate.setRetryTemplate(new RetryTemplate(RetryPolicy.withMaxAttempts(2)));
+ this.rabbitTemplate.setRetryTemplate(new RetryTemplate(RetryPolicy.withMaxRetries(2)));
}
}
diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilderSupportTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilderSupportTests.java
index 60ba7d7ff5..8508548cbd 100644
--- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilderSupportTests.java
+++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/RetryInterceptorBuilderSupportTests.java
@@ -65,7 +65,7 @@ public void testBasic() {
@Test
public void testWithCustomRetryPolicy() {
- RetryPolicy retryPolicy = RetryPolicy.builder().maxAttempts(2).build();
+ RetryPolicy retryPolicy = RetryPolicy.builder().maxRetries(2).build();
StatefulRetryOperationsInterceptor interceptor = RetryInterceptorBuilder.stateful()
.retryPolicy(retryPolicy)
.build();
@@ -78,7 +78,7 @@ public void testWithCustomRetryPolicy() {
public void testWithMoreAttempts() {
StatefulRetryOperationsInterceptor interceptor =
RetryInterceptorBuilder.stateful()
- .maxAttempts(5)
+ .maxRetries(5)
.build();
assertThat(TestUtils.getPropertyValue(interceptor, "retryPolicy.backOff.maxAttempts")).isEqualTo(5L);
@@ -88,7 +88,7 @@ public void testWithMoreAttempts() {
public void testWithCustomizedBackOffMoreAttempts() {
StatefulRetryOperationsInterceptor interceptor =
RetryInterceptorBuilder.stateful()
- .maxAttempts(5)
+ .maxRetries(5)
.backOffOptions(1, 2, 10)
.build();
@@ -149,7 +149,7 @@ public void testWithCustomNewMessageIdentifier() throws Exception {
@Test
public void testWitCustomRetryPolicyTraverseCause() {
StatefulRetryOperationsInterceptor interceptor = RetryInterceptorBuilder.stateful()
- .retryPolicy(RetryPolicy.builder().maxAttempts(15).build())
+ .retryPolicy(RetryPolicy.builder().maxRetries(15).build())
.build();
assertThat(TestUtils.getPropertyValue(interceptor, "retryPolicy.backOff.maxAttempts")).isEqualTo(15L);
diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/StatelessRetryOperationsInterceptorTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/StatelessRetryOperationsInterceptorTests.java
index 80de12352f..19b7ca5842 100644
--- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/StatelessRetryOperationsInterceptorTests.java
+++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/StatelessRetryOperationsInterceptorTests.java
@@ -55,7 +55,7 @@ void invokeWithSuccessOnFirstInvocation() throws Throwable {
@Test
void invokeWithFailuresNotExhaustingRetries() throws Throwable {
- RetryPolicy retryPolicy = RetryPolicy.builder().maxAttempts(2).delay(Duration.ZERO).build();
+ RetryPolicy retryPolicy = RetryPolicy.builder().maxRetries(2).delay(Duration.ZERO).build();
MethodInvocation invocation = mock(MethodInvocation.class);
given(invocation.proceed()).willThrow(new IllegalStateException("initial"))
.willThrow(new IllegalStateException("retry-1")).willReturn("hello");
@@ -66,7 +66,7 @@ void invokeWithFailuresNotExhaustingRetries() throws Throwable {
@Test
void invokeWithFailuresExhaustingRetriesReturnsResultFromRecoverer() throws Throwable {
- RetryPolicy retryPolicy = RetryPolicy.builder().maxAttempts(2).delay(Duration.ZERO).build();
+ RetryPolicy retryPolicy = RetryPolicy.builder().maxRetries(2).delay(Duration.ZERO).build();
Exception lastException = new IllegalStateException("retry-2");
Object[] arguments = new Object[] { "message" };
MethodInvocation invocation = mock(MethodInvocation.class);
@@ -82,7 +82,7 @@ void invokeWithFailuresExhaustingRetriesReturnsResultFromRecoverer() throws Thro
@Test
void invokeWithFailuresExhaustingRetriesThrowsResultFromRecoverer() throws Throwable {
- RetryPolicy retryPolicy = RetryPolicy.builder().maxAttempts(2).delay(Duration.ZERO).build();
+ RetryPolicy retryPolicy = RetryPolicy.builder().maxRetries(2).delay(Duration.ZERO).build();
Exception recovererException = new IllegalStateException("failed");
Object[] arguments = new Object[] { "message" };
MethodInvocation invocation = mock(MethodInvocation.class);
@@ -97,7 +97,7 @@ void invokeWithFailuresExhaustingRetriesThrowsResultFromRecoverer() throws Throw
@Test
void invokeWithFailuresExhaustingRetriesAndNoRecovererThrowsLastException() throws Throwable {
- RetryPolicy retryPolicy = RetryPolicy.builder().maxAttempts(2).delay(Duration.ZERO).build();
+ RetryPolicy retryPolicy = RetryPolicy.builder().maxRetries(2).delay(Duration.ZERO).build();
Exception LastException = new IllegalStateException("retry-2");
Object[] arguments = new Object[] { "message" };
MethodInvocation invocation = mock(MethodInvocation.class);
diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminTests.java
index 74d4353d2a..92a53de36d 100644
--- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminTests.java
+++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminTests.java
@@ -340,7 +340,7 @@ public void testRetry() throws Exception {
CachingConnectionFactory ccf = new CachingConnectionFactory(rabbitConnectionFactory);
RabbitAdmin admin = new RabbitAdmin(ccf);
RetryTemplate rtt = new RetryTemplate();
- rtt.setRetryPolicy(RetryPolicy.builder().maxAttempts(2).delay(Duration.ZERO).build());
+ rtt.setRetryPolicy(RetryPolicy.builder().maxRetries(2).delay(Duration.ZERO).build());
admin.setRetryTemplate(rtt);
GenericApplicationContext ctx = new GenericApplicationContext();
ctx.getBeanFactory().registerSingleton("foo", new AnonymousQueue());
diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateTests.java
index 6568170f79..68ecb97d97 100644
--- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateTests.java
+++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateTests.java
@@ -209,7 +209,7 @@ public void testRetry() throws Exception {
SingleConnectionFactory connectionFactory = new SingleConnectionFactory(mockConnectionFactory);
connectionFactory.setExecutor(mock(ExecutorService.class));
RabbitTemplate template = new RabbitTemplate(connectionFactory);
- template.setRetryTemplate(new RetryTemplate(RetryPolicy.builder().maxAttempts(3).delay(Duration.ZERO).build()));
+ template.setRetryTemplate(new RetryTemplate(RetryPolicy.builder().maxRetries(3).delay(Duration.ZERO).build()));
try {
template.convertAndSend("foo", "bar", "baz");
}
@@ -295,7 +295,7 @@ public void testRecovery() throws Exception {
SingleConnectionFactory connectionFactory = new SingleConnectionFactory(mockConnectionFactory);
connectionFactory.setExecutor(mock(ExecutorService.class));
RabbitTemplate template = new RabbitTemplate(connectionFactory);
- template.setRetryTemplate(new RetryTemplate(RetryPolicy.builder().maxAttempts(3).delay(Duration.ZERO).build()));
+ template.setRetryTemplate(new RetryTemplate(RetryPolicy.builder().maxRetries(3).delay(Duration.ZERO).build()));
final AtomicBoolean recoverInvoked = new AtomicBoolean();
diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java
index 4ef8030156..f0788db8ed 100644
--- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java
+++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java
@@ -210,7 +210,7 @@ private Advice createRetryInterceptor(final CountDownLatch latch, boolean statef
latch.countDown();
});
}
- factory.setRetryPolicy(RetryPolicy.builder().maxAttempts(2).delay(Duration.ofMillis(100)).build());
+ factory.setRetryPolicy(RetryPolicy.builder().maxRetries(2).delay(Duration.ofMillis(100)).build());
return factory.getObject();
}
diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapterTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapterTests.java
index ba15b514db..b8cd7f1d17 100644
--- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapterTests.java
+++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapterTests.java
@@ -203,7 +203,7 @@ public void testReplyRetry() throws Exception {
this.adapter = new MessageListenerAdapter();
this.adapter.setDefaultListenerMethod("handle");
this.adapter.setDelegate(this.simpleService);
- RetryPolicy retryPolicy = RetryPolicy.builder().maxAttempts(2).delay(Duration.ZERO).build();
+ RetryPolicy retryPolicy = RetryPolicy.builder().maxRetries(2).delay(Duration.ZERO).build();
RetryTemplate retryTemplate = new RetryTemplate();
retryTemplate.setRetryPolicy(retryPolicy);
this.adapter.setRetryTemplate(retryTemplate);
diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/retry/MissingIdRetryTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/retry/MissingIdRetryTests.java
index b4f95767e3..a3e8f74df6 100644
--- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/retry/MissingIdRetryTests.java
+++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/retry/MissingIdRetryTests.java
@@ -108,7 +108,7 @@ public void testWithNoId() throws Exception {
@Test
public void testWithId() throws Exception {
// 2 messages; each retried twice by retry interceptor
- RetryPolicy retryPolicy = RetryPolicy.builder().maxAttempts(2).delay(Duration.ZERO).build();
+ RetryPolicy retryPolicy = RetryPolicy.builder().maxRetries(2).delay(Duration.ZERO).build();
this.latch = new CountDownLatch(6);
ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext("retry-context.xml", this.getClass());
RabbitTemplate template = ctx.getBean(RabbitTemplate.class);
@@ -146,7 +146,7 @@ public void testWithId() throws Exception {
@Test
public void testWithIdAndSuccess() throws Exception {
- RetryPolicy retryPolicy = RetryPolicy.builder().maxAttempts(2).delay(Duration.ZERO).build();
+ RetryPolicy retryPolicy = RetryPolicy.builder().maxRetries(2).delay(Duration.ZERO).build();
// 2 messages; each retried twice by retry interceptor
this.latch = new CountDownLatch(6);
ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext("retry-context.xml", this.getClass());
diff --git a/src/reference/antora/modules/ROOT/pages/amqp/resilience-recovering-from-errors-and-broker-failures.adoc b/src/reference/antora/modules/ROOT/pages/amqp/resilience-recovering-from-errors-and-broker-failures.adoc
index 0db9e54663..1bc558b7cd 100644
--- a/src/reference/antora/modules/ROOT/pages/amqp/resilience-recovering-from-errors-and-broker-failures.adoc
+++ b/src/reference/antora/modules/ROOT/pages/amqp/resilience-recovering-from-errors-and-broker-failures.adoc
@@ -82,7 +82,7 @@ The following example shows how to do so:
@Bean
public StatefulRetryOperationsInterceptor interceptor() {
return RetryInterceptorBuilder.stateful()
- .maxAttempts(5)
+ .maxRetries(5)
.backOffOptions(1000, 2.0, 10000) // initialInterval, multiplier, maxInterval
.build();
}
@@ -151,7 +151,7 @@ The following example shows how to set a `RepublishMessageRecoverer` as the reco
@Bean
RetryOperationsInterceptor interceptor() {
return RetryInterceptorBuilder.stateless()
- .maxAttempts(5)
+ .maxRetries(5)
.recoverer(new RepublishMessageRecoverer(amqpTemplate(), "something", "somethingelse"))
.build();
}