SpringCloud组件三hystrix容错(服务降级)

  1. SpringCloud中的一个大牛,服务容错,他相当一个人一样,会自动帮你判断服务是否有用,并且在服务出现错误的时候进服务降级,给你一个通知(服务出错了请以后再来吧!)这就是hystrix的腻害之处,下面就看看我这个hystrix对不对吧!
  2. 在SpringCloud中是自动集成了hystrix的(说的是feign组件中是包括了的)所以我们在使用hystrix的时候只需要进行一些简单的配置就行了,不需要进行添加其他的依赖(如果是需要hystrix进行可视化的话那就需要添加一些相关的jar包,本次是不进行可视化页面监控的,所以不需要添加jar包了!)
  3. 在服务的消费者中添加两个文件夹(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 "系统繁忙,请稍后重试!";
    }
}

  1. 虽然说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容错

这里只对一些关键的代码进行解释

  1. 如要要进行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>
  1. hystrix的容错处理配置已经结束了,下面我们看看效果是否正确
    在这里插入图片描述
    两个服务开启成功!使用postman进行单元测试

在这里插入图片描述
porvider存在的时候返回
在这里插入图片描述
porvider不存在是返回
在这里插入图片描述
通过postman测试成功,服务错误是成进行服务降级!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值