实现 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

相关文章
|
4月前
|
负载均衡 中间件 定位技术
中间件故障转移和容错实现方法
【7月更文挑战第24天】
67 2
|
4月前
|
消息中间件 监控 负载均衡
中间件故障转移与容错
【7月更文挑战第23天】
84 1
|
4月前
|
分布式计算 UED 流计算
Java编程问题之重试机制问题之在使用重试机制时的问题如何解决
Java编程问题之重试机制问题之在使用重试机制时的问题如何解决
|
6月前
|
监控 物联网 Java
打造高可用系统:深入了解心跳检测机制
本文介绍了分布式系统中**心跳检测**的重要机制,用于监测系统节点的健康状态和通信畅通。心跳检测通过定期发送信号,若节点在预定期限内未响应则视为可能失效。处理机制包括重试、报警和自动修复。文章还提到了**周期检测**和**累计失效检测**两种策略,并给出Java代码示例展示心跳检测实现。此外,列举了心跳检测在分布式数据库、微服务和物联网等场景的应用,以及优化策略如动态调整心跳频率和优化超时机制。最后,强调了心跳检测对系统稳定性和高可用性的关键作用。
562 2
|
6月前
|
设计模式 Java 应用服务中间件
Java面向容错编程之重试机制
容错编程是一种重要的编程思想,它能够提高应用程序的可靠性和稳定性,同时提高代码的健壮性。本文总结了一些作者在面对服务失败时如何进行优雅重试,比如aop、cglib等同时对重试工具\组件的源码和注意事项进行总结分析。
|
6月前
|
C++
C++处理的异常的机制
C++处理的异常的机制
|
存储 算法 安全
|
存储 监控 数据可视化
01.崩溃捕获设计实践方案
01.崩溃捕获设计实践方案
189 3
|
存储 消息中间件 SQL
浅谈高并发和分布式系统的幂等如何处理
幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。 在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
|
程序员 C++ 开发者
C++异常和错误处理机制:如何使您的程序更加稳定和可靠
在C++编程中,异常处理和错误处理机制是非常重要的。它们可以帮助程序员有效地处理运行时错误和异常情况。本文将介绍C++中的异常处理和错误处理机制。
114 0