Commit 2ab2cf06 authored by Stephane Nicoll's avatar Stephane Nicoll

Merge pull request #23564 from jkhoward

* pr/23564:
  Polish "Add configuration option for channelRpcTimeout"
  Add configuration option for channelRpcTimeout

Closes gh-23564
parents 341bccbd c4e1b4f5
...@@ -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();
......
...@@ -120,6 +120,11 @@ public class RabbitProperties { ...@@ -120,6 +120,11 @@ public class RabbitProperties {
*/ */
private Duration connectionTimeout; private Duration connectionTimeout;
/**
* Continuation timeout for RPC calls in channels. Set it to zero to wait forever.
*/
private Duration channelRpcTimeout = Duration.ofMinutes(10);
/** /**
* Cache configuration. * Cache configuration.
*/ */
...@@ -336,6 +341,14 @@ public class RabbitProperties { ...@@ -336,6 +341,14 @@ public class RabbitProperties {
this.connectionTimeout = connectionTimeout; this.connectionTimeout = connectionTimeout;
} }
public Duration getChannelRpcTimeout() {
return this.channelRpcTimeout;
}
public void setChannelRpcTimeout(Duration channelRpcTimeout) {
this.channelRpcTimeout = channelRpcTimeout;
}
public Cache getCache() { public Cache getCache() {
return this.cache; return this.cache;
} }
......
...@@ -108,6 +108,8 @@ class RabbitAutoConfigurationTests { ...@@ -108,6 +108,8 @@ class RabbitAutoConfigurationTests {
.isEqualTo(com.rabbitmq.client.ConnectionFactory.DEFAULT_CHANNEL_MAX); .isEqualTo(com.rabbitmq.client.ConnectionFactory.DEFAULT_CHANNEL_MAX);
assertThat(connectionFactory.isPublisherConfirms()).isFalse(); assertThat(connectionFactory.isPublisherConfirms()).isFalse();
assertThat(connectionFactory.isPublisherReturns()).isFalse(); assertThat(connectionFactory.isPublisherReturns()).isFalse();
assertThat(connectionFactory.getRabbitConnectionFactory().getChannelRpcTimeout())
.isEqualTo(com.rabbitmq.client.ConnectionFactory.DEFAULT_CHANNEL_RPC_TIMEOUT);
assertThat(context.containsBean("rabbitListenerContainerFactory")) assertThat(context.containsBean("rabbitListenerContainerFactory"))
.as("Listener container factory should be created by default").isTrue(); .as("Listener container factory should be created by default").isTrue();
}); });
...@@ -140,7 +142,7 @@ class RabbitAutoConfigurationTests { ...@@ -140,7 +142,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 +152,7 @@ class RabbitAutoConfigurationTests { ...@@ -150,6 +152,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