前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(三)Spring Cloud分布式之初识熔断机制(hystrix)

(三)Spring Cloud分布式之初识熔断机制(hystrix)

原创
作者头像
John的留学视界和技术视野
修改2019-06-26 19:04:00
6150
修改2019-06-26 19:04:00
举报
文章被收录于专栏:程序视野程序视野

根据前两篇文章搭建的项目继续

传送门一((一)Spring Cloud分布式之初识Eureka——注册中心):https://cloud.tencent.com/developer/article/1449744

传送门二((二)Spring Cloud分布式之使用Eureka和Feign实现项目间简单的远程调用):https://cloud.tencent.com/developer/article/1449945

熔断机制(hystrix)

1. teacherdemo项目中新增loginHystrix方法

TeacherService中新增loginHystrix方法,当id等于101并且password等于abc的时候返回true,说明登录成功。

代码语言:txt
复制
@RequestMapping(value="/loginHystrix", method = RequestMethod.POST)
public boolean loginHystrix(@RequestParam("id")int id, @RequestParam("password")String password){
    if (id==101&&password.equals("abc")){
        return true;
    }else{
        return false;
    }
}

2. 修改receptiondemo项目

2.1 修改配置文件,开启熔断机制

代码语言:txt
复制
#开启熔断机制
feign.hystrix.enabled=true

2.2 修改TeacherService接口

  1. TeacherService接口中添加loginHystrix方法
代码语言:txt
复制
@RequestMapping(value="/loginHystrix", method = RequestMethod.POST)
public boolean loginHystrix(@RequestParam("id")int id, @RequestParam("password")String password);
  1. service包下创建hystrix包,创建TeacherServiceImpl类,用来实现熔断处理。
  2. @FeignClient注解中添加fallback属性,值为处理该接口熔断处理的实现类
代码语言:txt
复制
@FeignClient(name = "TEACHER", fallback = TeacherServiceImpl.class)

2.3 TeacherServiceImpl类中添加熔断处理方法

  1. TeacherServiceImpl类实现TeacherService接口
  2. 添加@Component注解
  3. 重写方法
代码语言:txt
复制
@Override
    public boolean loginHystrix(int id, String password) {
        System.out.println("熔断处理,找不到该方法!");
        return false;
    }

3. 运行,测试熔断处理

3.1开启项目

分别开启注册中心(centerdemo项目),消费者(receptiondemo项目),提供者(teacherdemo项目)。开启后浏览器输入下图地址,查看注册中心状态。

3.2测试熔断处理

地址栏先输入正确参数:id为101,password为abc

可以看到页面输出“登录成功”。

再关闭teacherdemo项目,重新刷新页面。

页面输出“登录成功”。再看看receptiondemo项目的控制台。

控制台输出“熔断处理,找不到该方法!”,熔断处理测试成功。

备注:上图receptiondemo项目中之所以会有CounselorService接口和CounselorServiceImpl类,是因为笔者给counselordemo也实现了熔断处理。感兴趣的朋友可以自己实现。

CounselorService代码如下

代码语言:txt
复制
package com.eurekademo.receptiondemo.service;

import com.eurekademo.receptiondemo.service.hystrix.CounselorServiceImpl;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@FeignClient(name = "COUNSELOR", fallback = CounselorServiceImpl.class)
public interface CounselorService {
    @RequestMapping(value = "/askCounselor", method = RequestMethod.POST)
    public String askCounselor();
}

CounselorServiceImpl代码如下

代码语言:txt
复制
package com.eurekademo.receptiondemo.service.hystrix;

import com.eurekademo.receptiondemo.service.CounselorService;
import org.springframework.stereotype.Component;

@Component
public class CounselorServiceImpl implements CounselorService {

    @Override
    public String askCounselor() {
        return "找不到班主任!去找老师去吧~~~";
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 根据前两篇文章搭建的项目继续
  • 熔断机制(hystrix)
    • 1. teacherdemo项目中新增loginHystrix方法
      • 2. 修改receptiondemo项目
        • 2.1 修改配置文件,开启熔断机制
        • 2.2 修改TeacherService接口
        • 2.3 TeacherServiceImpl类中添加熔断处理方法
      • 3. 运行,测试熔断处理
        • 3.1开启项目
        • 3.2测试熔断处理
      • 备注:上图receptiondemo项目中之所以会有CounselorService接口和CounselorServiceImpl类,是因为笔者给counselordemo也实现了熔断处理。感兴趣的朋友可以自己实现。
      相关产品与服务
      微服务引擎 TSE
      微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档