Spring Boot:从执行器/健康中删除 JmsHealthIndicator

问题描述 投票:0回答:1

我需要删除

JmsHealthIndicator
,以便
actuator/health
返回状态正常,即使 JMS 连接不起作用。

由于

JmsHealthIndicator
没有用
@ConditionalOnEnabledHealthIndicator
注释,我不能简单地用
management.endpoint.health.jms.enabled=false
将其关闭。

还有其他选择吗?

spring-boot jms spring-boot-actuator
1个回答
0
投票

根据 Spring 文档,此属性应禁用 Jms 健康检查,请参阅 Spring 自动配置指示器

management.health.jms.enabled = false

但是下面将通过扩展 JmsHealthIndicator 来取消相同的效果,如果 spring 检测到存在 JMS 连接工厂,JmsHealthIndicator 会自动配置,

@Slf4j
@Component
public class CustomJmsHealthIndicator extends JmsHealthIndicator {

    public CustomJmsHealthIndicator(ConnectionFactory connectionFactory) {
        super(connectionFactory);
    }

    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        log.debug("Nullified JMS Health Check");
    }
}

现在在 Spring 上下文中创建并初始化 bean

@Configuration
public class CustomJmsHealthCheck {

    @Autowired
    private ConnectionFactory connectionFactory;

    @Bean
    public JmsHealthIndicator jmsHealthIndicator(){
        JmsHealthIndicator jmsHealthIndicator = new CustomJmsHealthIndicator(connectionFactory);
        return jmsHealthIndicator;
    }
}

请注意,执行上述操作是因为存在 JMS 的服务中的健康检查导致连接数量增加,并且由于某种原因它没有被关闭。

© www.soinside.com 2019 - 2024. All rights reserved.