Commit baa9d129 authored by Jasmine Howard's avatar Jasmine Howard Committed by Stephane Nicoll

Add configuration option for channelRpcTimeout

This commit adds a configuration option to configure
RabbitConnectionFactory's channelRpcTimeout property.

See gh-23564
parent 341bccbd
...@@ -149,6 +149,8 @@ public class RabbitAutoConfiguration { ...@@ -149,6 +149,8 @@ public class RabbitAutoConfiguration {
} }
map.from(properties::getConnectionTimeout).whenNonNull().asInt(Duration::toMillis) map.from(properties::getConnectionTimeout).whenNonNull().asInt(Duration::toMillis)
.to(factory::setConnectionTimeout); .to(factory::setConnectionTimeout);
map.from(properties::getChannelRpcTimeout).whenNonNull().asInt(Duration::toMillis)
.to(factory::setChannelRpcTimeout);
map.from(credentialsProvider::getIfUnique).whenNonNull().to(factory::setCredentialsProvider); map.from(credentialsProvider::getIfUnique).whenNonNull().to(factory::setCredentialsProvider);
map.from(credentialsRefreshService::getIfUnique).whenNonNull().to(factory::setCredentialsRefreshService); map.from(credentialsRefreshService::getIfUnique).whenNonNull().to(factory::setCredentialsRefreshService);
factory.afterPropertiesSet(); factory.afterPropertiesSet();
......
...@@ -119,6 +119,11 @@ public class RabbitProperties { ...@@ -119,6 +119,11 @@ public class RabbitProperties {
* Connection timeout. Set it to zero to wait forever. * Connection timeout. Set it to zero to wait forever.
*/ */
private Duration connectionTimeout; private Duration connectionTimeout;
/**
* Channel RPC timeout.
*/
private Duration channelRpcTimeout;
/** /**
* Cache configuration. * Cache configuration.
...@@ -323,6 +328,10 @@ public class RabbitProperties { ...@@ -323,6 +328,10 @@ public class RabbitProperties {
public Duration getConnectionTimeout() { public Duration getConnectionTimeout() {
return this.connectionTimeout; return this.connectionTimeout;
} }
public Duration getChannelRpcTimeout() {
return this.channelRpcTimeout;
}
public void setPublisherConfirmType(ConfirmType publisherConfirmType) { public void setPublisherConfirmType(ConfirmType publisherConfirmType) {
this.publisherConfirmType = publisherConfirmType; this.publisherConfirmType = publisherConfirmType;
...@@ -335,6 +344,10 @@ public class RabbitProperties { ...@@ -335,6 +344,10 @@ public class RabbitProperties {
public void setConnectionTimeout(Duration connectionTimeout) { public void setConnectionTimeout(Duration connectionTimeout) {
this.connectionTimeout = connectionTimeout; this.connectionTimeout = connectionTimeout;
} }
public void setChannelRpcTimeout(Duration channelRpcTimeout) {
this.channelRpcTimeout = channelRpcTimeout;
}
public Cache getCache() { public Cache getCache() {
return this.cache; return this.cache;
......
...@@ -140,7 +140,7 @@ class RabbitAutoConfigurationTests { ...@@ -140,7 +140,7 @@ class RabbitAutoConfigurationTests {
.withPropertyValues("spring.rabbitmq.host:remote-server", "spring.rabbitmq.port:9000", .withPropertyValues("spring.rabbitmq.host:remote-server", "spring.rabbitmq.port:9000",
"spring.rabbitmq.address-shuffle-mode=random", "spring.rabbitmq.username:alice", "spring.rabbitmq.address-shuffle-mode=random", "spring.rabbitmq.username:alice",
"spring.rabbitmq.password:secret", "spring.rabbitmq.virtual_host:/vhost", "spring.rabbitmq.password:secret", "spring.rabbitmq.virtual_host:/vhost",
"spring.rabbitmq.connection-timeout:123") "spring.rabbitmq.connection-timeout:123", "spring.rabbitmq.channel-rpc-timeout:140")
.run((context) -> { .run((context) -> {
CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class); CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class);
assertThat(connectionFactory.getHost()).isEqualTo("remote-server"); assertThat(connectionFactory.getHost()).isEqualTo("remote-server");
...@@ -150,6 +150,7 @@ class RabbitAutoConfigurationTests { ...@@ -150,6 +150,7 @@ class RabbitAutoConfigurationTests {
assertThat(connectionFactory.getVirtualHost()).isEqualTo("/vhost"); assertThat(connectionFactory.getVirtualHost()).isEqualTo("/vhost");
com.rabbitmq.client.ConnectionFactory rcf = connectionFactory.getRabbitConnectionFactory(); com.rabbitmq.client.ConnectionFactory rcf = connectionFactory.getRabbitConnectionFactory();
assertThat(rcf.getConnectionTimeout()).isEqualTo(123); assertThat(rcf.getConnectionTimeout()).isEqualTo(123);
assertThat(rcf.getChannelRpcTimeout()).isEqualTo(140);
assertThat((List<Address>) ReflectionTestUtils.getField(connectionFactory, "addresses")).hasSize(1); assertThat((List<Address>) ReflectionTestUtils.getField(connectionFactory, "addresses")).hasSize(1);
}); });
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment