Feign使用Hystrix

Feign使用HystrixFeigh是以接口形式工作,它没有方法体,那么Feign如何整合Hystrix呢?如何实现Feign的回退呢?事实上,Spring Cloud默认已经为Feign整合了Hystrix,下面看一个实例。一 新建项目microservice-consumer-movie-feign-hystrix-fallback二 编写Feigh接口packagecom.itmuch.cloud.study.us…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Feigh是以接口形式工作,它没有方法体,那么Feign如何整合Hystrix呢?如何实现Feign的回退呢?

事实上,Spring Cloud默认已经为Feign整合了Hystrix,下面看一个实例。
一 新建项目microservice-consumer-movie-feign-hystrix-fallback
二 编写Feigh接口
package com.itmuch.cloud.study.user.feign;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.itmuch.cloud.study.user.entity.User;

/**
* Feign的fallback测试
* 使用@FeignClient的fallback属性指定回退类
*/
@FeignClient(name = "microservice-provider-user", fallback = FeignClientFallback.class)
public interface UserFeignClient {
  @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  public User findById(@PathVariable("id") Long id);

}

/**
* 回退类FeignClientFallback需实现Feign Client接口
* FeignClientFallback也可以是public class,没有区别
*/
@Component
class FeignClientFallback implements UserFeignClient {
  @Override
  public User findById(Long id) {
    User user = new User();
    user.setId(-1L);
    user.setUsername("默认用户");
    return user;
  }
}

Jetbrains全家桶1年46,售后保障稳定

由代码可知,只须使用@FeignClient注解的fallback属性,就可为指定名称的Feign客户端添加回退。
三 测试
1 启动eureka
2 启动user微服务
3 启动电影微服务
4 访问
http://localhost:8010/user/1,可获得正常结果
{“id”:1,”username”:”account1″,”name”:”张三”,”age”:20,”balance”:100.00}
5 停止用户微服务
6 再次访问
http://localhost:8010/user/1,可获得如下结果,说明当用户微服务不可用,进入了回退逻辑。
{“id”:-1,”username”:”默认用户”,”name”:null,”age”:null,”balance”:null}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234555.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常见数据库简答题_数据库基础知识试题

    常见数据库简答题_数据库基础知识试题数据库简答题第一章1.简述数据、数据库、数据库管理系统、数据库系统的概念(期末题库、课后题、大纲要求、试题三)数据:描述事物的符号记录数据库:(什么是数据库?答下面所有)长期存储在计算机内、有组织、可共享的大量数据的集合基本特征:(1)数据按照一定的数据模型组织、描述和存储(2)可为各种用户所共享(3)具有较小的冗余度(4)数据独立性较高(5)易扩展性数据库管理系统:(什么是数据库管理系统?答下面所有)(2001研招)位于用户与操作系统之间的一层数据管理软件,他与操作系统一样都是计

    2022年9月19日
    3
  • 看完很清醒,我相信这是一个同龄人写的。。加油。。被扇醒的感觉

    你学习一般,考上了现在的这个学校,成绩不算好,拿不到校奖国奖,自习不规律上课不常听,考试全靠突击,同学帮一把也能考到七八十分。你家境一般,父母都是普通员工,在这个城市一个月生活费一千二,没事下下馆子,一个月添一件衣服,想买台相机要等几个月,经常要咬咬牙才能买双自己喜欢的鞋。你特长一般,不会吉他不会钢琴不会跳舞不会画画,想学摄影却不会PS,想上台演出却没信心,学校晚会比赛的时候,你经

    2022年3月8日
    33
  • 双击pycharm没反应_pycharm为啥运行不了

    双击pycharm没反应_pycharm为啥运行不了PYCHARM双击无反应初识python和深度学习,按网上教程安装好anaconda和pycharm后,发现anacondanavigator,pycharm以及anaconda里装好的jupyternotebook都启动不了。。。只能通过.bat打开最后还是网上大神nb,成功解决了我的问题,下面是我看到的三种解决方法1.重置winsock(未解决我的问题)以管理员身份打开cmd输入命令netshwinsockreset重启电脑2.修改pycharm64.exe.vmoption

    2022年8月27日
    5
  • XSRF 的攻击与防范

    XSRF 的攻击与防范官方定义CSRF(Cross-siterequestforgery跨站请求伪造,也被称成为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而XSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS

    2022年5月19日
    33
  • Effective C++ Item 37 绝不又一次定义继承而来的缺省參数值「建议收藏」

    Effective C++ Item 37 绝不又一次定义继承而来的缺省參数值

    2022年2月5日
    52
  • [050] 微信公众平台开发入门视频教程已发布

    [050] 微信公众平台开发入门视频教程已发布2014年4月26日晚8点,我在CSDN社区在线培训课堂讲解了微信公众平台开发入门的相关知识,受到广大网友的一致好评,在此非常感谢大家的支持!课程结束后,很多网友表示由于报名人数限制、临时有事等原因,未能参加,希望能够提供录制视频的观看地址。视频教程的主要内容包括: 1、移动APP发展趋势(NativeAPP、WebAPP、LightAPP) 2、微信公众平台基础知识(服务号/订阅号、公众账

    2022年6月5日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号