在SpringCloud 服务中使用rabbitmq时,当rabbitmq 发生故障时(网络问题、rabbitmq服务挂掉等原因)。造成客户端所在的服务状态为不可用,服务无法提供其他服务。

这个问题主要是因为在服务中开启了健康检查,而检查点会自动检查rabbitmq的状态,导致整个服务状态不可用。

目前解决办法是强制取消rabbitmq的服务状态情况,直接使rabbitmq的状态为可用。

具体代码如下:

public class RabbitHealthIndicator implements HealthIndicator {

	@Autowired
	private RabbitTemplate rabbitTemplate;

	@Override
	public Health health() {
		try {
			getVersion();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return Health.up().build();
	}

	private String getVersion() {
		return this.rabbitTemplate
				.execute((channel) -> channel.getConnection().getServerProperties().get("version").toString());
	}

}

发表评论