From 38362201121be839347b4df7ebdf549afd50fc82 Mon Sep 17 00:00:00 2001 From: Jonghan Kim Date: Wed, 26 Aug 2020 20:08:46 +0900 Subject: [PATCH 1/2] Add addressShuffleMode property --- .../amqp/RabbitAutoConfiguration.java | 2 ++ .../autoconfigure/amqp/RabbitProperties.java | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+) 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 6276bf358c98..be2b219439b1 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 @@ -83,6 +83,7 @@ * @author Gary Russell * @author Phillip Webb * @author Artsiom Yudovin + * @author Jonghan Kim * @since 1.0.0 */ @Configuration(proxyBeanMethods = false) @@ -105,6 +106,7 @@ public CachingConnectionFactory rabbitConnectionFactory(RabbitProperties propert .getObject()); PropertyMapper map = PropertyMapper.get(); map.from(properties::determineAddresses).to(factory::setAddresses); + map.from(properties::determineAddressShuffleMode).to(factory::setAddressShuffleMode); map.from(properties::isPublisherReturns).to(factory::setPublisherReturns); map.from(properties::getPublisherConfirmType).whenNonNull().to(factory::setPublisherConfirmType); RabbitProperties.Cache.Channel channel = properties.getCache().getChannel(); 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 f2c90aa58588..52bc25d42d22 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.Optional; import org.springframework.amqp.core.AcknowledgeMode; +import org.springframework.amqp.rabbit.connection.AbstractConnectionFactory; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.CacheMode; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.ConfirmType; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -41,6 +42,7 @@ * @author Gary Russell * @author Artsiom Yudovin * @author Franjo Zilic + * @author Jonghan Kim * @since 1.0.0 */ @ConfigurationProperties(prefix = "spring.rabbitmq") @@ -87,6 +89,11 @@ public class RabbitProperties { */ private String addresses; + /** + * Shuffling mode for connecting host. Default mode is NONE. + */ + private String addressShuffleMode = "NONE"; + /** * Requested heartbeat timeout; zero for none. If a duration suffix is not specified, * seconds will be used. @@ -282,6 +289,28 @@ public void setVirtualHost(String virtualHost) { this.virtualHost = "".equals(virtualHost) ? "/" : virtualHost; } + public String getAddressShuffleMode() { + return this.addressShuffleMode; + } + + /** + * If addresses have been set and address shuffle mode has been set it is returned. + * Otherwise returns the result of calling {@code getAddressShuffleMode()}. + * @return the address shuffle mode + * @see #setAddressShuffleMode(String) + * @see #getAddressShuffleMode() + */ + public AbstractConnectionFactory.AddressShuffleMode determineAddressShuffleMode() { + if (CollectionUtils.isEmpty(this.parsedAddresses)) { + return AbstractConnectionFactory.AddressShuffleMode.NONE; + } + return AbstractConnectionFactory.AddressShuffleMode.valueOf(this.addressShuffleMode.toUpperCase()); + } + + public void setAddressShuffleMode(String addressShuffleMode) { + this.addressShuffleMode = addressShuffleMode; + } + public Duration getRequestedHeartbeat() { return this.requestedHeartbeat; } From 1267a94e0bfc60dcb1f1bf391dfee37dcb605d05 Mon Sep 17 00:00:00 2001 From: Jonghan Kim Date: Wed, 26 Aug 2020 22:01:00 +0900 Subject: [PATCH 2/2] edit reviewed with addressShuffleMode property --- .../amqp/RabbitAutoConfiguration.java | 2 +- .../autoconfigure/amqp/RabbitProperties.java | 24 ++++--------------- 2 files changed, 6 insertions(+), 20 deletions(-) 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 be2b219439b1..5e4e2f1e44fb 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 @@ -106,7 +106,7 @@ public CachingConnectionFactory rabbitConnectionFactory(RabbitProperties propert .getObject()); PropertyMapper map = PropertyMapper.get(); map.from(properties::determineAddresses).to(factory::setAddresses); - map.from(properties::determineAddressShuffleMode).to(factory::setAddressShuffleMode); + map.from(properties::getAddressShuffleMode).whenNonNull().to(factory::setAddressShuffleMode); map.from(properties::isPublisherReturns).to(factory::setPublisherReturns); map.from(properties::getPublisherConfirmType).whenNonNull().to(factory::setPublisherConfirmType); RabbitProperties.Cache.Channel channel = properties.getCache().getChannel(); 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 52bc25d42d22..c2388bae5ff8 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,7 +23,7 @@ import java.util.Optional; import org.springframework.amqp.core.AcknowledgeMode; -import org.springframework.amqp.rabbit.connection.AbstractConnectionFactory; +import org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.AddressShuffleMode; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.CacheMode; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.ConfirmType; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -90,9 +90,9 @@ public class RabbitProperties { private String addresses; /** - * Shuffling mode for connecting host. Default mode is NONE. + * Shuffling mode for connecting host. */ - private String addressShuffleMode = "NONE"; + private AddressShuffleMode addressShuffleMode; /** * Requested heartbeat timeout; zero for none. If a duration suffix is not specified, @@ -289,25 +289,11 @@ public void setVirtualHost(String virtualHost) { this.virtualHost = "".equals(virtualHost) ? "/" : virtualHost; } - public String getAddressShuffleMode() { + public AddressShuffleMode getAddressShuffleMode() { return this.addressShuffleMode; } - /** - * If addresses have been set and address shuffle mode has been set it is returned. - * Otherwise returns the result of calling {@code getAddressShuffleMode()}. - * @return the address shuffle mode - * @see #setAddressShuffleMode(String) - * @see #getAddressShuffleMode() - */ - public AbstractConnectionFactory.AddressShuffleMode determineAddressShuffleMode() { - if (CollectionUtils.isEmpty(this.parsedAddresses)) { - return AbstractConnectionFactory.AddressShuffleMode.NONE; - } - return AbstractConnectionFactory.AddressShuffleMode.valueOf(this.addressShuffleMode.toUpperCase()); - } - - public void setAddressShuffleMode(String addressShuffleMode) { + public void setAddressShuffleMode(AddressShuffleMode addressShuffleMode) { this.addressShuffleMode = addressShuffleMode; }