Skip to content

Commit 86a9037

Browse files
committed
Merge pull request #17848 from htztomic
* pr/17848: Polish "Support additional publisher confirm types" Support additional publisher confirm types Closes gh-17848
2 parents 54f4e44 + 8954fe1 commit 86a9037

File tree

4 files changed

+49
-8
lines changed

4 files changed

+49
-8
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: 18 additions & 6 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;
@@ -87,14 +88,14 @@ public class RabbitProperties {
8788
private Duration requestedHeartbeat;
8889

8990
/**
90-
* Whether to enable publisher confirms.
91+
* Whether to enable publisher returns.
9192
*/
92-
private boolean publisherConfirms;
93+
private boolean publisherReturns;
9394

9495
/**
95-
* Whether to enable publisher returns.
96+
* Type of publisher confirms to use.
9697
*/
97-
private boolean publisherReturns;
98+
private ConfirmType publisherConfirmType;
9899

99100
/**
100101
* Connection timeout. Set it to zero to wait forever.
@@ -274,12 +275,15 @@ public void setRequestedHeartbeat(Duration requestedHeartbeat) {
274275
this.requestedHeartbeat = requestedHeartbeat;
275276
}
276277

278+
@DeprecatedConfigurationProperty(reason = "replaced to support additional confirm types",
279+
replacement = "spring.rabbitmq.publisher-confirm-type")
277280
public boolean isPublisherConfirms() {
278-
return this.publisherConfirms;
281+
return this.publisherConfirmType.equals(ConfirmType.CORRELATED);
279282
}
280283

284+
@Deprecated
281285
public void setPublisherConfirms(boolean publisherConfirms) {
282-
this.publisherConfirms = publisherConfirms;
286+
this.publisherConfirmType = (publisherConfirms) ? ConfirmType.CORRELATED : ConfirmType.NONE;
283287
}
284288

285289
public boolean isPublisherReturns() {
@@ -294,6 +298,14 @@ public Duration getConnectionTimeout() {
294298
return this.connectionTimeout;
295299
}
296300

301+
public void setPublisherConfirmType(ConfirmType publisherConfirmType) {
302+
this.publisherConfirmType = publisherConfirmType;
303+
}
304+
305+
public ConfirmType getPublisherConfirmType() {
306+
return this.publisherConfirmType;
307+
}
308+
297309
public void setConnectionTimeout(Duration connectionTimeout) {
298310
this.connectionTimeout = connectionTimeout;
299311
}

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
* @author Greg Turnquist
8181
* @author Stephane Nicoll
8282
* @author Gary Russell
83+
* @author HaiTao Zhang
8384
*/
8485
class RabbitAutoConfigurationTests {
8586

@@ -210,6 +211,34 @@ void testConnectionFactoryPublisherSettings() {
210211
});
211212
}
212213

214+
@Test
215+
void testConnectionFactorPublisherSettingsUsingConfirmType() {
216+
this.contextRunner.withUserConfiguration(TestConfiguration.class)
217+
.withPropertyValues("spring.rabbitmq.publisher-confirm-type=correlated",
218+
"spring.rabbitmq.publisher-returns=true")
219+
.run((context) -> {
220+
CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class);
221+
RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class);
222+
assertThat(connectionFactory.isPublisherConfirms()).isTrue();
223+
assertThat(connectionFactory.isPublisherReturns()).isTrue();
224+
assertThat(getMandatory(rabbitTemplate)).isTrue();
225+
});
226+
}
227+
228+
@Test
229+
void testConnectionFactorySimplePublisherSettingsUsingConfirmType() {
230+
this.contextRunner.withUserConfiguration(TestConfiguration.class)
231+
.withPropertyValues("spring.rabbitmq.publisher-confirm-type=simple",
232+
"spring.rabbitmq.publisher-returns=true")
233+
.run((context) -> {
234+
CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class);
235+
RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class);
236+
assertThat(connectionFactory.isSimplePublisherConfirms()).isTrue();
237+
assertThat(connectionFactory.isPublisherReturns()).isTrue();
238+
assertThat(getMandatory(rabbitTemplate)).isTrue();
239+
});
240+
}
241+
213242
@Test
214243
void testRabbitTemplateMessageConverters() {
215244
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
@@ -182,7 +182,7 @@
182182
<slf4j.version>1.7.26</slf4j.version>
183183
<snakeyaml.version>1.24</snakeyaml.version>
184184
<solr.version>8.2.0</solr.version>
185-
<spring-amqp.version>2.2.0.M4</spring-amqp.version>
185+
<spring-amqp.version>2.2.0.BUILD-SNAPSHOT</spring-amqp.version>
186186
<spring-batch.version>4.2.0.BUILD-SNAPSHOT</spring-batch.version>
187187
<spring-cloud-connectors.version>2.0.6.RELEASE</spring-cloud-connectors.version>
188188
<spring-data-releasetrain.version>Moore-BUILD-SNAPSHOT</spring-data-releasetrain.version>

0 commit comments

Comments
 (0)