SpringBoot 禁用 rabbitTemplate 兔子健康检查的重试策略

SpringBoot Disable rabbitTemplate retry policy for rabbit health check

我的 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 对健康检查端点的重试或至少给它一些超时?

您可以覆盖默认的运行状况指示器 bean 以使用不启用重试的模板...

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

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

}