Skip to content

Commit 562e6e4

Browse files
committed
fix to gh-17828
1 parent e805b6e commit 562e6e4

File tree

4 files changed

+51
-4
lines changed

4 files changed

+51
-4
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ public CachingConnectionFactory rabbitConnectionFactory(RabbitProperties propert
9999
CachingConnectionFactory factory = new CachingConnectionFactory(
100100
getRabbitConnectionFactoryBean(properties).getObject());
101101
map.from(properties::determineAddresses).to(factory::setAddresses);
102-
map.from(properties::isPublisherConfirms).to(factory::setPublisherConfirms);
103102
map.from(properties::isPublisherReturns).to(factory::setPublisherReturns);
103+
map.from(properties::getPublisherConfirmType).whenNonNull().to(factory::setPublisherConfirmType);
104104
RabbitProperties.Cache.Channel channel = properties.getCache().getChannel();
105105
map.from(channel::getSize).whenNonNull().to(factory::setChannelCacheSize);
106106
map.from(channel::getCheckoutTimeout).whenNonNull().as(Duration::toMillis)

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import org.springframework.amqp.core.AcknowledgeMode;
2525
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.CacheMode;
26+
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.ConfirmType;
2627
import org.springframework.boot.context.properties.ConfigurationProperties;
2728
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
2829
import org.springframework.boot.convert.DurationUnit;
@@ -96,6 +97,11 @@ public class RabbitProperties {
9697
*/
9798
private boolean publisherReturns;
9899

100+
/**
101+
* The type of publisher confirms to use.
102+
*/
103+
private ConfirmType publisherConfirmType;
104+
99105
/**
100106
* Connection timeout. Set it to zero to wait forever.
101107
*/
@@ -275,11 +281,16 @@ public void setRequestedHeartbeat(Duration requestedHeartbeat) {
275281
}
276282

277283
public boolean isPublisherConfirms() {
278-
return this.publisherConfirms;
284+
return this.publisherConfirmType.equals(ConfirmType.CORRELATED);
279285
}
280286

287+
@Deprecated
281288
public void setPublisherConfirms(boolean publisherConfirms) {
282-
this.publisherConfirms = publisherConfirms;
289+
if (publisherConfirms) {
290+
this.publisherConfirmType = ConfirmType.CORRELATED;
291+
return;
292+
}
293+
this.publisherConfirmType = ConfirmType.NONE;
283294
}
284295

285296
public boolean isPublisherReturns() {
@@ -294,6 +305,14 @@ public Duration getConnectionTimeout() {
294305
return this.connectionTimeout;
295306
}
296307

308+
public void setPublisherConfirmType(ConfirmType publisherConfirmType) {
309+
this.publisherConfirmType = publisherConfirmType;
310+
}
311+
312+
public ConfirmType getPublisherConfirmType() {
313+
return this.publisherConfirmType;
314+
}
315+
297316
public void setConnectionTimeout(Duration connectionTimeout) {
298317
this.connectionTimeout = connectionTimeout;
299318
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfigurationTests.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,34 @@ void testConnectionFactoryPublisherSettings() {
210210
});
211211
}
212212

213+
@Test
214+
void testConnectionFactorPublisherSettingsUsingConfirmType() {
215+
this.contextRunner.withUserConfiguration(TestConfiguration.class)
216+
.withPropertyValues("spring.rabbitmq.publisher-confirm-type=correlated",
217+
"spring.rabbitmq.publisher-returns=true")
218+
.run((context) -> {
219+
CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class);
220+
RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class);
221+
assertThat(connectionFactory.isPublisherConfirms()).isTrue();
222+
assertThat(connectionFactory.isPublisherReturns()).isTrue();
223+
assertThat(getMandatory(rabbitTemplate)).isTrue();
224+
});
225+
}
226+
227+
@Test
228+
void testConnectionFactorySimplePublisherSettingsUsingConfirmType() {
229+
this.contextRunner.withUserConfiguration(TestConfiguration.class)
230+
.withPropertyValues("spring.rabbitmq.publisher-confirm-type=simple",
231+
"spring.rabbitmq.publisher-returns=true")
232+
.run((context) -> {
233+
CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class);
234+
RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class);
235+
assertThat(connectionFactory.isSimplePublisherConfirms()).isTrue();
236+
assertThat(connectionFactory.isPublisherReturns()).isTrue();
237+
assertThat(getMandatory(rabbitTemplate)).isTrue();
238+
});
239+
}
240+
213241
@Test
214242
void testRabbitTemplateMessageConverters() {
215243
this.contextRunner.withUserConfiguration(MessageConvertersConfiguration.class).run((context) -> {

spring-boot-project/spring-boot-dependencies/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@
180180
<slf4j.version>1.7.26</slf4j.version>
181181
<snakeyaml.version>1.24</snakeyaml.version>
182182
<solr.version>8.2.0</solr.version>
183-
<spring-amqp.version>2.2.0.M4</spring-amqp.version>
183+
<spring-amqp.version>2.2.0.BUILD-SNAPSHOT</spring-amqp.version>
184184
<spring-batch.version>4.2.0.M3</spring-batch.version>
185185
<spring-cloud-connectors.version>2.0.6.RELEASE</spring-cloud-connectors.version>
186186
<spring-data-releasetrain.version>Moore-RC2</spring-data-releasetrain.version>

0 commit comments

Comments
 (0)