如何通过配置禁用 Rabbit 健康检查

How to disable Rabbit health check via Configuration

我想在我的默认 RabbitMockConfiguration 中禁用兔子健康检查。 我们有一个通过 @Import 导入的配置。不幸的是,配置不会阻止将健康检查添加到健康指标,因为一旦 spring-rabbit 在类路径中就会发生这种情况。

我们有解决方法,我们在每个使用该配置的服务中添加一个属性文件,这会禁用 属性 management.health.rabbit.enabled,但对我们来说,能够禁用会更好配置级别的健康检查。

我考虑过使用 @TestPropertySource(properties = ["management.health.rabbit.enabled=false"]) 进行测试,但我找不到用于 @Configuration 的等效项,因为 @PropertySource 需要一个属性文件的位置并且确实不接受单一属性。

知道我们能做什么吗?

Spring开机版本:2.2.4
Spring amqp 版本:2.2.3
Spring版本:5.2.3

我想您应该使用 MockReddisConfiguration 添加 'ApplicationListener' 并将实现添加到 'src/main/resources/META-INF/spring.factories' 到您的模块中。对此有更详细的描述 here

如果您想更改健康检查的行为,我宁愿覆盖健康检查,使其声明 Rabbit 处于模拟模式。

为此,只需创建一个名为 rabbitHealthIndicator:

HealthIndicator bean
@Bean
public HealthIndicator rabbitHealthIndicator() {
    return () -> Health.up().withDetail("version", "mock").build();
}

这具有切换生产应用的效果,并暴露了该应用是 运行 模拟应用的事实。