diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java index 63e58b8f..f849fe82 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java @@ -466,8 +466,8 @@ public class RabbitTemplate extends RabbitAccessor // NOSONAR type line count */ @Deprecated public void setReturnCallback(ReturnCallback returnCallback) { - Assert.state(this.returnsCallback == null || - (this.returnsCallback.delegate() != null && this.returnsCallback.delegate().equals(returnCallback)), + ReturnCallback delegate = this.returnsCallback == null ? null : this.returnsCallback.delegate(); + Assert.state(this.returnsCallback == null || delegate == null || delegate.equals(returnCallback), "Only one ReturnCallback is supported by each RabbitTemplate"); this.returnsCallback = new ReturnsCallback() { @@ -2856,7 +2856,7 @@ public class RabbitTemplate extends RabbitAccessor // NOSONAR type line count void returnedMessage(ReturnedMessage returned); /** - * Internal use only; transisitional during deprecation. + * Internal use only; transitional during deprecation. * @return the legacy delegate. * @deprecated - will be removed with {@link ReturnCallback}. */ 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 ba208522..de881d1f 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 @@ -66,6 +66,7 @@ import org.springframework.amqp.rabbit.connection.PublisherCallbackChannel; import org.springframework.amqp.rabbit.connection.RabbitUtils; import org.springframework.amqp.rabbit.connection.SimpleRoutingConnectionFactory; import org.springframework.amqp.rabbit.connection.SingleConnectionFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate.ReturnCallback; import org.springframework.amqp.rabbit.core.RabbitTemplate.ReturnsCallback; import org.springframework.amqp.support.converter.SimpleMessageConverter; import org.springframework.amqp.utils.SerializationUtils; @@ -572,6 +573,12 @@ public class RabbitTemplateTests { ReturnsCallback cb = TestUtils.getPropertyValue(template, "returnsCallback", ReturnsCallback.class); cb.returnedMessage(new ReturnedMessage(null, 0, null, null, null)); assertThat(called.get()).isTrue(); + assertThatIllegalStateException().isThrownBy(() -> + template.setReturnCallback(mock(RabbitTemplate.ReturnCallback.class))); + RabbitTemplate template2 = new RabbitTemplate(); + ReturnCallback callback = mock(RabbitTemplate.ReturnCallback.class); + template2.setReturnCallback(callback); + template2.setReturnCallback(callback); } @SuppressWarnings("serial")