测试了一个 hystrix dashboard 项目,可以检测其他 springboot 服务的状态。将这个项目连接到我的另一个 springCloud 项目里,却报错: Unable to connect to Command Metric Stream
在网上搜索发现一种解决方法说:如果使用的是 springBoot 2.x 等比较新的版本,需要在 hystrix 的消费端增加一个 ServletRegistrationBean,用来配置监控路径。检查了一下自己 springCloud 项目,发现用的是 springBoot 2.0.3。然后在被监控项目的启动类里增加 ServletRegistrationBean 这个 bean,之后 hystrix dashboard 就能检测到其他 springboot 服务了。
@EnableCircuitBreaker
@SpringBootApplication
@EnableDiscoveryClient
public class BookConsumer8077Application {
// 这个配置是为了实现服务监控,与断路器无关,
// 因为 springboot 2.x 的默认路径不是 "/hystrix.stream",
// 所以需要在项目里配置这个 ServletRegistrationBean
@Bean
public ServletRegistrationBean getServlet() {
HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean( streamServlet );
registrationBean.setLoadOnStartup( 1 );
registrationBean.addUrlMappings( "/hystrix.stream" );
registrationBean.setName( "HystrixMetricsStreamServlet" );
return registrationBean;
}
//
public static void main( String[] ar ) {
SpringApplication.run( BookConsumer8077Application.class, ar );
}
}
版权声明:本文为beguile原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。