From df8c58904a2973cd87bf135fd064c00c89856401 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Mon, 10 Nov 2025 14:15:13 +0100 Subject: [PATCH] Start building against Spring Framework 7.0.0 snapshots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/spring-projects/spring-framework/issues/35772 Signed-off-by: Stéphane Nicoll --- build.gradle | 2 +- .../amqp/rabbit/config/RetryInterceptorBuilder.java | 10 +++++----- .../springframework/amqp/rabbit/core/RabbitAdmin.java | 4 ++-- .../amqp/rabbit/log4j2/AmqpAppender.java | 2 +- .../config/RetryInterceptorBuilderSupportTests.java | 8 ++++---- .../StatelessRetryOperationsInterceptorTests.java | 8 ++++---- .../amqp/rabbit/core/RabbitAdminTests.java | 2 +- .../amqp/rabbit/core/RabbitTemplateTests.java | 4 ++-- .../MessageListenerContainerRetryIntegrationTests.java | 2 +- .../listener/adapter/MessageListenerAdapterTests.java | 2 +- .../amqp/rabbit/retry/MissingIdRetryTests.java | 4 ++-- ...nce-recovering-from-errors-and-broker-failures.adoc | 4 ++-- 12 files changed, 26 insertions(+), 26 deletions(-) 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(); }