Hystrix监控服务整合完成

This commit is contained in:
YoVinchen 2023-08-15 21:38:05 +08:00
parent 8d136d0f68
commit ea08aaa2a9
11 changed files with 113 additions and 10 deletions

View File

@ -18,6 +18,10 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>

View File

@ -25,16 +25,9 @@ public class BorrowController {
@Resource
BorrowService service;
@HystrixCommand(fallbackMethod = "onError") //使用@HystrixCommand来指定备选方案
@RequestMapping("/borrow/{uid}")
UserBorrowDetail findUserBorrows(@PathVariable("uid") int uid){
return service.getUserBorrowDetailByUid(uid);
}
//备选方案这里直接返回空列表了
//注意参数和返回值要和上面的一致
UserBorrowDetail onError(int uid){
System.out.println("执行补救措施");
return new UserBorrowDetail(null, Collections.emptyList());
}
}

View File

@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
* @author yovinchen
* @Create 2023/8/15 16:56
*/
@FeignClient("bookservice")
@FeignClient(value = "bookservice", fallback = BookFallbackClient.class)
public interface BookClient {
@RequestMapping("/book/{bid}")
Book findBookById(@PathVariable("bid") int bid);

View File

@ -0,0 +1,21 @@
package com.test.service.client;
import com.test.entity.Book;
import org.springframework.stereotype.Component;
/**
* ClassName: BookFallbackClient
* Package: com.test.service.client
*
* @author yovinchen
* @Create 2023/8/15 20:37
*/
@Component //注意需要将其注册为BeanFeign才能自动注入
public class BookFallbackClient implements BookClient {
@Override
public Book findBookById(int bid) { //这里我们自行对其进行实现并返回我们的替代方案
Book book = new Book();
book.setTitle("我是替代方案");
return book;
}
}

View File

@ -12,8 +12,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
* @author yovinchen
* @Create 2023/8/15 16:54
*/
@FeignClient("userservice")
//声明为userservice服务的HTTP请求客户端
//fallback参数指定为我们刚刚编写的实现类
@FeignClient(value = "userservice", fallback = UserFallbackClient.class)
public interface UserClient {
//路径保证和其他微服务提供的一致即可

View File

@ -0,0 +1,21 @@
package com.test.service.client;
import com.test.entity.User;
import org.springframework.stereotype.Component;
/**
* ClassName: UserFallbackClient
* Package: com.test.service.client
*
* @author yovinchen
* @Create 2023/8/15 20:24
*/
@Component //注意需要将其注册为BeanFeign才能自动注入
public class UserFallbackClient implements UserClient{
@Override
public User getUserById(int uid) { //这里我们自行对其进行实现并返回我们的替代方案
User user = new User();
user.setName("我是替代方案");
return user;
}
}

View File

@ -15,3 +15,11 @@ eureka:
instance:
prefer-ip-address: true
instance-id: ${spring.cloud.client.ip-address}:${server.port}
feign:
circuitbreaker:
enabled: true
management:
endpoints:
web:
exposure:
include: '*'

29
hystrix-dashboard/pom.xml Normal file
View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.example</groupId>
<artifactId>SpringCloudStudy</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>org.example</groupId>
<artifactId>hystrix-dashboard</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
<version>2.2.10.RELEASE</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,20 @@
package com.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
/**
* ClassName: HystrixApplication
* Package: com.test
*
* @author yovinchen
* @Create 2023/8/15 21:19
*/
@SpringBootApplication
@EnableHystrixDashboard
public class HystrixDashBoardApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixDashBoardApplication.class, args);
}
}

View File

@ -0,0 +1,6 @@
server:
port: 8900
hystrix:
dashboard:
# 将localhost添加到白名单默认是不允许的
proxy-stream-allow-list: "localhost"

View File

@ -20,6 +20,7 @@
<module>book-service</module>
<module>commons</module>
<module>eureka-service</module>
<module>hystrix-dashboard</module>
</modules>
<properties>
<java.version>1.8</java.version>