Merge pull request #14252 from nosan:gh-14122

* pr/14252:
  Polish "Add support for configuring missingQueuesFatal property"
  Add support for configuring missingQueuesFatal property
This commit is contained in:
Stephane Nicoll 2018-09-07 16:51:41 +02:00
commit 9b9a8888b4
4 changed files with 23 additions and 1 deletions

View File

@ -116,6 +116,9 @@ public abstract class AbstractRabbitListenerContainerFactoryConfigurer<T extends
if (configuration.getIdleEventInterval() != null) {
factory.setIdleEventInterval(configuration.getIdleEventInterval().toMillis());
}
if (configuration.getMissingQueuesFatal() != null) {
factory.setMissingQueuesFatal(configuration.getMissingQueuesFatal());
}
ListenerRetry retryConfig = configuration.getRetry();
if (retryConfig.isEnabled()) {
RetryInterceptorBuilder<?> builder = (retryConfig.isStateless())

View File

@ -592,6 +592,12 @@ public class RabbitProperties {
*/
private Duration idleEventInterval;
/**
* Whether to fail if the queues declared by the container are not available on
* the broker.
*/
private Boolean missingQueuesFatal;
/**
* Optional properties for a retry interceptor.
*/
@ -637,6 +643,14 @@ public class RabbitProperties {
this.idleEventInterval = idleEventInterval;
}
public Boolean getMissingQueuesFatal() {
return this.missingQueuesFatal;
}
public void setMissingQueuesFatal(Boolean missingQueuesFatal) {
this.missingQueuesFatal = missingQueuesFatal;
}
public ListenerRetry getRetry() {
return this.retry;
}

View File

@ -469,6 +469,7 @@ public class RabbitAutoConfigurationTests {
"spring.rabbitmq.listener.simple.prefetch:40",
"spring.rabbitmq.listener.simple.defaultRequeueRejected:false",
"spring.rabbitmq.listener.simple.idleEventInterval:5",
"spring.rabbitmq.listener.simple.missingQueuesFatal:false",
"spring.rabbitmq.listener.simple.transactionSize:20")
.run((context) -> {
SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory = context
@ -500,7 +501,8 @@ public class RabbitAutoConfigurationTests {
"spring.rabbitmq.listener.direct.consumers-per-queue:5",
"spring.rabbitmq.listener.direct.prefetch:40",
"spring.rabbitmq.listener.direct.defaultRequeueRejected:false",
"spring.rabbitmq.listener.direct.idleEventInterval:5")
"spring.rabbitmq.listener.direct.idleEventInterval:5",
"spring.rabbitmq.listener.direct.missingQueuesFatal:false")
.run((context) -> {
DirectRabbitListenerContainerFactory rabbitListenerContainerFactory = context
.getBean("rabbitListenerContainerFactory",
@ -624,6 +626,7 @@ public class RabbitAutoConfigurationTests {
assertThat(dfa.getPropertyValue("defaultRequeueRejected"))
.isEqualTo(Boolean.FALSE);
assertThat(dfa.getPropertyValue("idleEventInterval")).isEqualTo(5L);
assertThat(dfa.getPropertyValue("missingQueuesFatal")).isEqualTo(false);
Advice[] adviceChain = (Advice[]) dfa.getPropertyValue("adviceChain");
assertThat(adviceChain).isNotNull();
assertThat(adviceChain.length).isEqualTo(1);

View File

@ -1137,6 +1137,7 @@ content into your application. Rather, pick only the properties that you need.
spring.rabbitmq.listener.direct.consumers-per-queue= # Number of consumers per queue.
spring.rabbitmq.listener.direct.default-requeue-rejected= # Whether rejected deliveries are re-queued by default.
spring.rabbitmq.listener.direct.idle-event-interval= # How often idle container events should be published.
spring.rabbitmq.listener.direct.missing-queues-fatal= # Whether to fail if the queues declared by the container are not available on the broker.
spring.rabbitmq.listener.direct.prefetch= # Number of messages to be handled in a single request. It should be greater than or equal to the transaction size (if used).
spring.rabbitmq.listener.direct.retry.enabled=false # Whether publishing retries are enabled.
spring.rabbitmq.listener.direct.retry.initial-interval=1000ms # Duration between the first and second attempt to deliver a message.
@ -1150,6 +1151,7 @@ content into your application. Rather, pick only the properties that you need.
spring.rabbitmq.listener.simple.default-requeue-rejected= # Whether rejected deliveries are re-queued by default.
spring.rabbitmq.listener.simple.idle-event-interval= # How often idle container events should be published.
spring.rabbitmq.listener.simple.max-concurrency= # Maximum number of listener invoker threads.
spring.rabbitmq.listener.simple.missing-queues-fatal= # Whether to fail if the queues declared by the container are not available on the broker.
spring.rabbitmq.listener.simple.prefetch= # Number of messages to be handled in a single request. It should be greater than or equal to the transaction size (if used).
spring.rabbitmq.listener.simple.retry.enabled=false # Whether publishing retries are enabled.
spring.rabbitmq.listener.simple.retry.initial-interval=1000ms # Duration between the first and second attempt to deliver a message.