SpringBoot Отключить политику повторных попыток RabbitTemplate для проверки работоспособности кролика

Моя конфигурация SpringBoot содержит очень строгую политику повторных попыток для повторных попыток rabbitTemplate.

spring:
  rabbitmq:
    template:
      retry:
        enabled: true
        initial-interval: 500
        max-attempts: 10
        multiplier: 5
        max-interval: 60000

Проблема с этой конфигурацией заключается в том, что когда вызывается конечная точка работоспособности, а rabbitMQ не работает, соединения зависают на действительно долгое время.

Добавление таких свойств, как

spring.rabbitmq.connection-timeout=500 or
spring.rabbitmq.template.receive-timeout=500 or
spring.rabbitmq.template.reply-timeout=500 or 
spring.rabbitmq.requested-heartbeat=1

не помогает, так как retry.multiplier=5, так что это все равно займет много времени.

Если мы проигнорируем, является ли политика повторных попыток хорошей или нет, есть ли способ отключить повторные попытки rabbitTemplate для конечной точки проверки работоспособности или, по крайней мере, дать ей некоторый тайм-аут?


person Marko Vranjkovic    schedule 21.02.2017    source источник


Ответы (1)


Вы можете переопределить bean-компонент индикатора работоспособности по умолчанию, чтобы использовать шаблон без повторных попыток...

@Configuration
public class MyRabbitHealthIndicatorOverride
        extends CompositeHealthIndicatorConfiguration<RabbitHealthIndicator, RabbitTemplate> {

    @Bean
    public HealthIndicator rabbitHealthIndicator(ConnectionFactory connectionFactory) {
        return createHealthIndicator(new RabbitTemplate(connectionFactory));
    }

}
person Gary Russell    schedule 21.02.2017