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));
}
}
我的 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));
}
}