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 5f146086c9..e9f717f05f 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 @@ -124,6 +124,7 @@ public class RabbitAutoConfiguration { map.from(properties::determineVirtualHost).whenNonNull().to(factory::setVirtualHost); map.from(properties::getRequestedHeartbeat).whenNonNull().asInt(Duration::getSeconds) .to(factory::setRequestedHeartbeat); + map.from(properties::getRequestedChannelMax).to(factory::setRequestedChannelMax); RabbitProperties.Ssl ssl = properties.getSsl(); if (ssl.determineEnabled()) { factory.setUseSSL(true); @@ -140,7 +141,6 @@ public class RabbitAutoConfiguration { } map.from(properties::getConnectionTimeout).whenNonNull().asInt(Duration::toMillis) .to(factory::setConnectionTimeout); - map.from(properties::getRequestedChannelMax).whenNonNull().to(factory::setRequestedChannelMax); factory.afterPropertiesSet(); return factory; } 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 403d6a033f..6eed4a9369 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 @@ -88,6 +88,11 @@ public class RabbitProperties { @DurationUnit(ChronoUnit.SECONDS) private Duration requestedHeartbeat; + /** + * Number of channels per connection requested by the client. Use 0 for unlimited. + */ + private int requestedChannelMax = 2047; + /** * Whether to enable publisher returns. */ @@ -103,13 +108,6 @@ public class RabbitProperties { */ private Duration connectionTimeout; - /** - * Requested Channel Max; zero for unlimited. Number of channels per connection client - * will request from server, actual maximum will be negotiated between client and - * server for lowest value (excluding zero as it represents unlimited). - */ - private Integer requestedChannelMax; - /** * Cache configuration. */ @@ -283,6 +281,14 @@ public class RabbitProperties { this.requestedHeartbeat = requestedHeartbeat; } + public int getRequestedChannelMax() { + return this.requestedChannelMax; + } + + public void setRequestedChannelMax(int requestedChannelMax) { + this.requestedChannelMax = requestedChannelMax; + } + @DeprecatedConfigurationProperty(reason = "replaced to support additional confirm types", replacement = "spring.rabbitmq.publisher-confirm-type") public boolean isPublisherConfirms() { @@ -318,14 +324,6 @@ public class RabbitProperties { this.connectionTimeout = connectionTimeout; } - public Integer getRequestedChannelMax() { - return this.requestedChannelMax; - } - - public void setRequestedChannelMax(Integer requestedChannelMax) { - this.requestedChannelMax = requestedChannelMax; - } - public Cache getCache() { return this.cache; } 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 560d8061f2..1630f03c05 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 @@ -100,6 +100,8 @@ class RabbitAutoConfigurationTests { assertThat(messagingTemplate.getRabbitTemplate()).isEqualTo(rabbitTemplate); assertThat(amqpAdmin).isNotNull(); assertThat(connectionFactory.getHost()).isEqualTo("localhost"); + assertThat(getTargetConnectionFactory(context).getRequestedChannelMax()) + .isEqualTo(com.rabbitmq.client.ConnectionFactory.DEFAULT_CHANNEL_MAX); assertThat(connectionFactory.isPublisherConfirms()).isFalse(); assertThat(connectionFactory.isPublisherReturns()).isFalse(); assertThat(context.containsBean("rabbitListenerContainerFactory")) @@ -601,6 +603,15 @@ class RabbitAutoConfigurationTests { }); } + @Test + void customizeRequestedChannelMax() { + this.contextRunner.withUserConfiguration(TestConfiguration.class) + .withPropertyValues("spring.rabbitmq.requestedChannelMax:12").run((context) -> { + com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory = getTargetConnectionFactory(context); + assertThat(rabbitConnectionFactory.getRequestedChannelMax()).isEqualTo(12); + }); + } + @Test void noSslByDefault() { this.contextRunner.withUserConfiguration(TestConfiguration.class).run((context) -> { @@ -716,24 +727,6 @@ class RabbitAutoConfigurationTests { return (TrustManager) trustManager; } - @Test - void testChangeDefaultRequestedChannelMax() throws Exception { - this.contextRunner.withUserConfiguration(TestConfiguration.class) - .withPropertyValues("spring.rabbitmq.requestedChannelMax:12").run((context) -> { - com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory = getTargetConnectionFactory(context); - assertThat(rabbitConnectionFactory.getRequestedChannelMax()).isEqualTo(12); - }); - } - - @Test - void testKeepDefaultRequestedChannelMax() throws Exception { - this.contextRunner.withUserConfiguration(TestConfiguration.class).run((context) -> { - com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory = getTargetConnectionFactory(context); - assertThat(rabbitConnectionFactory.getRequestedChannelMax()) - .isEqualTo(com.rabbitmq.client.ConnectionFactory.DEFAULT_CHANNEL_MAX); - }); - } - private com.rabbitmq.client.ConnectionFactory getTargetConnectionFactory(AssertableApplicationContext context) { CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class); return connectionFactory.getRabbitConnectionFactory();