我的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因此无论如何都将花费大量时间。
retry.multiplier=5
如果我们不考虑重试策略是否良好,是否有办法为运行状况检查终结点禁用RabbitTemplate重试,或者至少给它一些超时?
您可以覆盖默认的运行状况指示器Bean以使用未启用重试的模板…
@Configuration public class MyRabbitHealthIndicatorOverride extends CompositeHealthIndicatorConfiguration<RabbitHealthIndicator, RabbitTemplate> { @Bean public HealthIndicator rabbitHealthIndicator(ConnectionFactory connectionFactory) { return createHealthIndicator(new RabbitTemplate(connectionFactory)); } }