我需要删除
JmsHealthIndicator
,以便 actuator/health
返回状态正常,即使 JMS 连接不起作用。
由于
JmsHealthIndicator
没有用 @ConditionalOnEnabledHealthIndicator
注释,我不能简单地用 management.endpoint.health.jms.enabled=false
将其关闭。
还有其他选择吗?
根据 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 的服务中的健康检查导致连接数量增加,并且由于某种原因它没有被关闭。