- SpringCloud中的一个大牛,服务容错,他相当一个人一样,会自动帮你判断服务是否有用,并且在服务出现错误的时候进服务降级,给你一个通知(服务出错了请以后再来吧!)这就是hystrix的腻害之处,下面就看看我这个hystrix对不对吧!
- 在SpringCloud中是自动集成了hystrix的(说的是feign组件中是包括了的)所以我们在使用hystrix的时候只需要进行一些简单的配置就行了,不需要进行添加其他的依赖(如果是需要hystrix进行可视化的话那就需要添加一些相关的jar包,本次是不进行可视化页面监控的,所以不需要添加jar包了!)
- 在服务的消费者中添加两个文件夹(client和fallback)
在添加文件后我们要添加一些接口和实现类
i. UserFeignClient是一个接口,是为了处理消费者发送过来的请求,如果请求发送不到服务提供者处,就会进行服务判断,是添加容错使用的,类似于service接口(示例代码)
package com.kgc.client;
import com.kgc.fallback.UserFeignClientHystrix;
import com.kgc.model.User;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
/*name值为对应数据图提供者provider的名字
* fallback为添加容错
* */
@FeignClient(name = "eureka-provider",fallback = UserFeignClientHystrix.class)
public interface UserFeignClient {
/*传入值为普通数据*/
@RequestMapping(value = "/login")
public String login(@RequestParam (value = "name")String name
,@RequestParam(value = "pwd")String pwd);
/*传入值为对象*/
@RequestMapping(value = "/login2")
public String login2(@RequestBody User user);
}
ii. UserFeignClinetHystrix(标注取名为UserFeignClientFallback),这个类是对如果服务出现错误了,进行服务降级处理的具体实现的,他是一个类似于serviceimpl的实现类(示例代码)
package com.kgc.fallback;
import com.kgc.client.UserFeignClient;
import com.kgc.model.User;
import org.springframework.stereotype.Component;
/*容错类*/
@Component
public class UserFeignClientHystrix implements UserFeignClient {
@Override
public String login(String name, String pwd) {
return "系统繁忙,请稍后重试!";
}
@Override
public String login2(User user) {
return "系统繁忙,请稍后重试!";
}
}
- 虽然说SpringCloud是约定优于配置的,但是呢对于内部的一些组件配置文件,我们还是需要书写的(在yml文件中进行配置)
eureka:
client:
service-url:
defaultZone: http://root:root@localhost:8787/eureka
instance:
lease-renewal-interval-in-seconds: 2
lease-expiration-duration-in-seconds: 2
instance-id: ${spring.cloud.client.ipAddress}:${server.port}
spring:
application:
name: springCloud-eureka-consumer
server:
port: 8890
security:
basic:
enabled: false
#开启用户验证,默认是true开启的
feign:
hystrix:
enabled: true
#开启hystrix容错
这里只对一些关键的代码进行解释
- 如要要进行hystrix可视化监控的可添加一些依赖,然后配置文件是一样的
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
- hystrix的容错处理配置已经结束了,下面我们看看效果是否正确
两个服务开启成功!使用postman进行单元测试
porvider存在的时候返回
porvider不存在是返回
通过postman测试成功,服务错误是成进行服务降级!