实现 FallbackFactory 容错获取异常|学习笔记

简介: 快速学习实现 FallbackFactory 容错获取异常

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段实现 FallbackFactory 容错获取异常】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/684/detail/11884


实现 FallbackFactory 容错获取异常

 

用 FallbackFactory 实现容错获取异常

如何使用 Fegin 整合 Sentinel 实现服务容错,但是使用这种方式达不到容错过程中产生的异常。没有异常就无法进入日志。

对以后的运维都是非常不良好的,Sentinel 提供了另外一种方式,允许我们在编写容错类的时候,实现一个叫 FallbackFactory 的接口,它的内部有一个叫 create 的方法,能传入这个过程中产生的异常。

重构容错类

按照要求实现 FallbackFactory 的接口,接口中要传递一个泛型,泛型中是要为哪个接口产生容错类。

Package com.itheima.service.fallback;

Import com.itheima.servicr.ProductService;

Import feign.hystrix.FallbackFactory;

Publicclass ProductServiceFallbackFactory implements FallbackFactory <ProductService>{

}

为容错类连上接口,实现方法

//这是一个容错类,他要求我们要是实现一个 FallbackFactory< 要为哪个接口产生容错类>

Public class ProductServiceFallbackFactory implements FallbackFactory <ProductService> {

@Override

Public productService creat(Throwable throwable) (

)

代码编写,这里采用异名内部类,将原来的逻辑粘贴即可。

//Throwable 这就是 fegin 在调用过程中产生异常

@Override

Public ProductService creat(Throwable throwable) (

Return new ProductService() {

@Override

Public product findBypid(Integer pid) {

Log.error(“{}”,throwable);

Product product=new Product();

Product.setpid(-100);

Product setPname(“商品微服务调用出现异常了,已经进入到了容错方法中”)

Return product;

)

);

将Service放到容器里

另外,还需要加一个 Fallbackfactory 指定调用容错类,fallback 和 fallbackfactory只能用一个。

Value=”service-product”,

//fallback=ProductServiceFallback.class,

fallbackFactory=ProductServiceFallbackFactory.class

重新启动两个微服务后,模拟下单

{

“oid”:11

“uid”:1

“username”:”测试用户”,

“pid”:1.

“pname”:”小米”.

“ppcice”,1000

“number”:1

}

将 product 停掉,order application 中的指示清掉后,此时下单都是失败的。

{

“cid”:-100.

“uid”:null.

“username”:null.

“pid”:null.

“pname”:”x下单失败”.

“ppcice”:null.

“number”:null

}

这样操作,异常也可以打印到 order 上了

image.png

相关文章
|
存储 缓存
什么是TS流?
什么是TS流?
509 0
|
JavaScript 前端开发 Java
建立SpringBoot项目
在最新版本中,通过Eclipse建立Spring Boot项目,使用在Eclipse市场安装目前不太稳定,需要重新安装Spring Boot版本的Eclipse,现在介绍如何进行。
1234 0
建立SpringBoot项目
|
11月前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
781 0
|
消息中间件 监控 安全
Kafka客户端工具:Offset Explorer 使用指南
Kafka客户端工具:Offset Explorer 使用指南
10851 0
|
搜索推荐 前端开发 JavaScript
SpringBoot静态资源访问控制和封装集成方案
该文档描述了对基于SpringBoot的项目框架进行优化和整合的过程。原先采用前后端分离,后端兼做前端,但随着项目增多,升级维护变得复杂。因此,决定整合后台管理页面与后端代码,统一发布。设计上,框架包含后台管理资源,项目则配置具体业务页面,项目可通过覆盖框架资源实现个性化。关键步骤包括:自定义静态资源访问路径、解决图标与字体文件访问问题、设定自定义欢迎页面和页面图标,以及确保项目能正确访问框架静态资源。通过扫描jar包、解压和拷贝资源到项目目录,实现了框架静态资源的动态加载。此外,调整静态资源访问优先级,保证正确加载。最终实现支持jar和war包的项目结构优化。
318 4
|
Java
jdk(1.8) jvm 默认参数
jdk(1.8) jvm 默认参数
1218 0
|
小程序 中间件 API
使用Hbuilder将网页打包成APP
有需求将手机端的web网站打包成一个APP 百度了一下,提供相关需求的网站还不少,但是基本上体验都很差,而且一般都是有广告的,APP的名称也不能自定义。 也有一些很高级的工具,例如Cordova
883 0
|
Java Maven Android开发
android之gradle配置仓库与引入依赖
android之gradle配置仓库与引入依赖
1076 0
|
IDE Java Shell
云效codeup使用指南
云效codeup体验指南
1506 2
云效codeup使用指南
|
存储 缓存 算法
【优化技术专题】「线程间的高性能消息框架」深入浅出Disruptor的使用和原理
【优化技术专题】「线程间的高性能消息框架」深入浅出Disruptor的使用和原理
475 0
【优化技术专题】「线程间的高性能消息框架」深入浅出Disruptor的使用和原理