diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfiguration.java
index 9258e9052a..44e02746c3 100644
--- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfiguration.java
+++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfiguration.java
@@ -99,8 +99,8 @@ public class RabbitAutoConfiguration {
CachingConnectionFactory factory = new CachingConnectionFactory(
getRabbitConnectionFactoryBean(properties).getObject());
map.from(properties::determineAddresses).to(factory::setAddresses);
- map.from(properties::isPublisherConfirms).to(factory::setPublisherConfirms);
map.from(properties::isPublisherReturns).to(factory::setPublisherReturns);
+ map.from(properties::getPublisherConfirmType).whenNonNull().to(factory::setPublisherConfirmType);
RabbitProperties.Cache.Channel channel = properties.getCache().getChannel();
map.from(channel::getSize).whenNonNull().to(factory::setChannelCacheSize);
map.from(channel::getCheckoutTimeout).whenNonNull().as(Duration::toMillis)
diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java
index 6443dface3..17501e389e 100644
--- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java
+++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java
@@ -23,6 +23,7 @@ import java.util.List;
import org.springframework.amqp.core.AcknowledgeMode;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.CacheMode;
+import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.ConfirmType;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
import org.springframework.boot.convert.DurationUnit;
@@ -96,6 +97,11 @@ public class RabbitProperties {
*/
private boolean publisherReturns;
+ /**
+ * The type of publisher confirms to use.
+ */
+ private ConfirmType publisherConfirmType;
+
/**
* Connection timeout. Set it to zero to wait forever.
*/
@@ -275,11 +281,16 @@ public class RabbitProperties {
}
public boolean isPublisherConfirms() {
- return this.publisherConfirms;
+ return this.publisherConfirmType.equals(ConfirmType.CORRELATED);
}
+ @Deprecated
public void setPublisherConfirms(boolean publisherConfirms) {
- this.publisherConfirms = publisherConfirms;
+ if (publisherConfirms) {
+ this.publisherConfirmType = ConfirmType.CORRELATED;
+ return;
+ }
+ this.publisherConfirmType = ConfirmType.NONE;
}
public boolean isPublisherReturns() {
@@ -294,6 +305,14 @@ public class RabbitProperties {
return this.connectionTimeout;
}
+ public void setPublisherConfirmType(ConfirmType publisherConfirmType) {
+ this.publisherConfirmType = publisherConfirmType;
+ }
+
+ public ConfirmType getPublisherConfirmType() {
+ return this.publisherConfirmType;
+ }
+
public void setConnectionTimeout(Duration connectionTimeout) {
this.connectionTimeout = connectionTimeout;
}
diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfigurationTests.java
index 46fe91e038..b7fc88f88d 100644
--- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfigurationTests.java
+++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfigurationTests.java
@@ -210,6 +210,34 @@ class RabbitAutoConfigurationTests {
});
}
+ @Test
+ void testConnectionFactorPublisherSettingsUsingConfirmType() {
+ this.contextRunner.withUserConfiguration(TestConfiguration.class)
+ .withPropertyValues("spring.rabbitmq.publisher-confirm-type=correlated",
+ "spring.rabbitmq.publisher-returns=true")
+ .run((context) -> {
+ CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class);
+ RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class);
+ assertThat(connectionFactory.isPublisherConfirms()).isTrue();
+ assertThat(connectionFactory.isPublisherReturns()).isTrue();
+ assertThat(getMandatory(rabbitTemplate)).isTrue();
+ });
+ }
+
+ @Test
+ void testConnectionFactorySimplePublisherSettingsUsingConfirmType() {
+ this.contextRunner.withUserConfiguration(TestConfiguration.class)
+ .withPropertyValues("spring.rabbitmq.publisher-confirm-type=simple",
+ "spring.rabbitmq.publisher-returns=true")
+ .run((context) -> {
+ CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class);
+ RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class);
+ assertThat(connectionFactory.isSimplePublisherConfirms()).isTrue();
+ assertThat(connectionFactory.isPublisherReturns()).isTrue();
+ assertThat(getMandatory(rabbitTemplate)).isTrue();
+ });
+ }
+
@Test
void testRabbitTemplateMessageConverters() {
this.contextRunner.withUserConfiguration(MessageConvertersConfiguration.class).run((context) -> {
diff --git a/spring-boot-project/spring-boot-dependencies/pom.xml b/spring-boot-project/spring-boot-dependencies/pom.xml
index 0803414005..516a2c8869 100644
--- a/spring-boot-project/spring-boot-dependencies/pom.xml
+++ b/spring-boot-project/spring-boot-dependencies/pom.xml
@@ -182,7 +182,7 @@
1.7.26
1.24
8.2.0
- 2.2.0.M4
+ 2.2.0.BUILD-SNAPSHOT
4.2.0.BUILD-SNAPSHOT
2.0.6.RELEASE
Moore-BUILD-SNAPSHOT