一尘不染

SpringBoot禁用RabbitTemplate重试策略以进行兔子健康检查

spring-boot

我的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重试,或者至少给它一些超时?


阅读 1766

收藏
2020-05-30

共1个答案

一尘不染

您可以覆盖默认的运行状况指示器Bean以使用未启用重试的模板…

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

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

}
2020-05-30