一 介绍
Spring Cloud在封装Turbine的时候,还封装了基于消息代理的实现。可以将所有需要收集的监控消息都输出到消息代理中,然后Turbine服务再从消息代理中异步获取这些监控消息,最后将这些监控消息聚合并输出到Hystrix Dashboard中。
二 架构图
这里多了一个重要元素RabbitMQ
三 项目说明
构建一个新的应用以实现基于消息代理的Turbine聚合服务。
四 实战
1 创建一个Spring Boot工程,命名turbine-amqp。
2 编辑pom.xml,增加相关依赖。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-turbine-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
这里主要引入了spring-cloud-starter-turbine-amqp,它实际包装了spring-cloud-starter-turbine-stream和spring-cloud-starter-stream-rabbit。
3 在主类上加入注解@EnableTurbineStream来启用Turbine Stream的配置。
package com.didispace;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.turbine.stream.EnableTurbineStream;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@EnableTurbineStream
@EnableDiscoveryClient
public class TurbineApplication {
public static void main(String[] args) {
SpringApplication.run(TurbineApplication.class, args);
}
}
4 修改配置文件
spring.application.name=turbine-amqp
server.port=7989
management.port=7990
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 修改服务消费者Ribbon-consumer的pom.xml,增加spring-cloud-netflix-hystrix-amqp依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-hystrix-amqp</artifactId>
</dependency>
五 测试
1 启动eureka、hello-Service、Ribbon-consumer、Turbine以及Hystrix Dashboard。
2 确保RabbitMQ正常运行。
3 访问Hystrix Dashboard。
4 开启http://localhost:8989/turnbine.stram监控。
5 观察结果