git add .

This commit is contained in:
罗祥
2019-01-16 14:24:37 +08:00
parent 7c3e42909c
commit c19c349fd5
19 changed files with 206 additions and 38 deletions

View File

@ -0,0 +1,3 @@
http://localhost:8040/turbine.stream
http://localhost:8020/actuator/hystrix.stream

View File

@ -15,7 +15,17 @@ import org.springframework.context.annotation.Bean;
@EnableHystrixDashboard
public class ConsumerApplication {
@Bean
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
/*
* 这种方式对servlet进行注册和在配置文件中开启端点是等效的
* 可以在启动的监控日志中看到端点的注册信息:
* o.s.b.a.e.web.ServletEndpointRegistrar : Registered '/actuator/hystrix.stream' to hystrix.stream-actuator-endpoint
@Bean
public ServletRegistrationBean getServlet() {
HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
@ -23,11 +33,7 @@ public class ConsumerApplication {
registrationBean.addUrlMappings("/actuator/hystrix.stream");
registrationBean.setName("HystrixMetricsStreamServlet");
return registrationBean;
}
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}*/
}

View File

@ -0,0 +1,17 @@
package com.heibaiying.consumer.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author : heibaiying
*/
@RestController
public class CustomController {
@GetMapping("consumers")
public String queryCustoms() {
return "用户产品偏好列表生成中,请月底再获取";
}
}

View File

@ -1,5 +1,5 @@
server:
port: 8080
port: 8030
# 指定服务命名
spring:
application:
@ -9,4 +9,10 @@ eureka:
client:
serviceUrl:
defaultZone: http://localhost:8010/eureka/
management:
endpoints:
web:
exposure:
# 需要开启hystrix.stream端点的暴露 这样才能获取到监控信息 * 代表开启可监控端点
include: "*"

View File

@ -27,6 +27,26 @@
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!--ribbon 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<!--引入hystrix-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!--hystrix 监控依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<!--健康检查依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>

View File

@ -3,11 +3,24 @@ package com.heibaiying.producer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
@EnableHystrixDashboard
public class ProducerApplication {
@LoadBalanced // 配置客户端负载均衡
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ProducerApplication.class, args);
}

View File

@ -0,0 +1,24 @@
package com.heibaiying.producer.controller;
import com.heibaiying.producer.service.api.ICustomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author : heibaiying
* @description : 用来测试turbine聚合监控功能的接口 调用了custom的服务
*/
@RestController
public class CustomController {
@Autowired
private ICustomService customService;
@GetMapping("consumers")
public String queryCustoms() {
return customService.queryCustoms();
}
}

View File

@ -3,6 +3,7 @@ package com.heibaiying.producer.controller;
import com.heibaiying.common.api.IProductService;
import com.heibaiying.common.bean.Product;
import com.heibaiying.producer.service.api.ICustomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -17,6 +18,7 @@ public class ProducerController {
@Autowired
private IProductService productService;
@GetMapping("products")
public List<Product> productList() {
return productService.queryAllProducts();
@ -31,4 +33,5 @@ public class ProducerController {
public void save(@RequestBody Product product) {
productService.saveProduct(product);
}
}

View File

@ -0,0 +1,28 @@
package com.heibaiying.producer.service;
import com.heibaiying.producer.service.api.ICustomService;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
/**
* @author : heibaiying
*/
@Service
public class CustomService implements ICustomService {
@Autowired
RestTemplate restTemplate;
@Override
@HystrixCommand(fallbackMethod = "queryCustomsFail")
public String queryCustoms() {
return restTemplate.getForObject("http://consumer/consumers", String.class);
}
public String queryCustomsFail() {
return "获取用户列表失败";
}
}

View File

@ -0,0 +1,11 @@
package com.heibaiying.producer.service.api;
/**
* @author : heibaiying
* @description : 用户接口
*/
public interface ICustomService {
String queryCustoms();
}

View File

@ -9,3 +9,9 @@ eureka:
client:
serviceUrl:
defaultZone: http://localhost:8010/eureka/
management:
endpoints:
web:
exposure:
# 需要开启hystrix.stream端点的暴露 这样才能获取到监控信息 * 代表开启可监控端点
include: "*"

View File

@ -1,14 +1,11 @@
package com.heibaiying.turbine;
import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.netflix.turbine.EnableTurbine;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
@EnableDiscoveryClient
@ -17,17 +14,6 @@ import org.springframework.context.annotation.Bean;
@EnableTurbine
public class TurbineApplication {
@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[] args) {
SpringApplication.run(TurbineApplication.class, args);
}

View File

@ -1,5 +1,5 @@
server:
port: 8090
port: 8040
# 指定服务命名
spring:
application:
@ -13,9 +13,9 @@ eureka:
turbine:
aggregator:
cluster-config: default
app-config: consumer
clusterNameExpression: new String("default")
instanceUrlSuffix:
default: actuator/hystrix.stream
combine-host-port: true
app-config: consumer,producer
clusterNameExpression: "'default'"