Search in sources :

Example 1 with ListenerRetry

use of org.springframework.boot.autoconfigure.amqp.RabbitProperties.ListenerRetry in project spring-boot by spring-projects.

the class SimpleRabbitListenerContainerFactoryConfigurer method configure.

/**
	 * Configure the specified rabbit listener container factory. The factory can be
	 * further tuned and default settings can be overridden.
	 * @param factory the {@link SimpleRabbitListenerContainerFactory} instance to
	 * configure
	 * @param connectionFactory the {@link ConnectionFactory} to use
	 */
public void configure(SimpleRabbitListenerContainerFactory factory, ConnectionFactory connectionFactory) {
    Assert.notNull(factory, "Factory must not be null");
    Assert.notNull(connectionFactory, "ConnectionFactory must not be null");
    factory.setConnectionFactory(connectionFactory);
    if (this.messageConverter != null) {
        factory.setMessageConverter(this.messageConverter);
    }
    RabbitProperties.Listener listenerConfig = this.rabbitProperties.getListener();
    factory.setAutoStartup(listenerConfig.isAutoStartup());
    if (listenerConfig.getAcknowledgeMode() != null) {
        factory.setAcknowledgeMode(listenerConfig.getAcknowledgeMode());
    }
    if (listenerConfig.getConcurrency() != null) {
        factory.setConcurrentConsumers(listenerConfig.getConcurrency());
    }
    if (listenerConfig.getMaxConcurrency() != null) {
        factory.setMaxConcurrentConsumers(listenerConfig.getMaxConcurrency());
    }
    if (listenerConfig.getPrefetch() != null) {
        factory.setPrefetchCount(listenerConfig.getPrefetch());
    }
    if (listenerConfig.getTransactionSize() != null) {
        factory.setTxSize(listenerConfig.getTransactionSize());
    }
    if (listenerConfig.getDefaultRequeueRejected() != null) {
        factory.setDefaultRequeueRejected(listenerConfig.getDefaultRequeueRejected());
    }
    if (listenerConfig.getIdleEventInterval() != null) {
        factory.setIdleEventInterval(listenerConfig.getIdleEventInterval());
    }
    ListenerRetry retryConfig = listenerConfig.getRetry();
    if (retryConfig.isEnabled()) {
        RetryInterceptorBuilder<?> builder = (retryConfig.isStateless() ? RetryInterceptorBuilder.stateless() : RetryInterceptorBuilder.stateful());
        builder.maxAttempts(retryConfig.getMaxAttempts());
        builder.backOffOptions(retryConfig.getInitialInterval(), retryConfig.getMultiplier(), retryConfig.getMaxInterval());
        MessageRecoverer recoverer = (this.messageRecoverer != null ? this.messageRecoverer : new RejectAndDontRequeueRecoverer());
        builder.recoverer(recoverer);
        factory.setAdviceChain(builder.build());
    }
}
Also used : RejectAndDontRequeueRecoverer(org.springframework.amqp.rabbit.retry.RejectAndDontRequeueRecoverer) MessageRecoverer(org.springframework.amqp.rabbit.retry.MessageRecoverer) ListenerRetry(org.springframework.boot.autoconfigure.amqp.RabbitProperties.ListenerRetry)

Aggregations

MessageRecoverer (org.springframework.amqp.rabbit.retry.MessageRecoverer)1 RejectAndDontRequeueRecoverer (org.springframework.amqp.rabbit.retry.RejectAndDontRequeueRecoverer)1 ListenerRetry (org.springframework.boot.autoconfigure.amqp.RabbitProperties.ListenerRetry)1