2.2. MicroProfile Fault Tolerance
2.2.1. 关于 MicroProfile 容错规范 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
MicroProfile Fault Tolerance 规范定义了处理分布式微服务中固有的错误的策略。
MicroProfile Fault Tolerance 规范定义了以下策略来处理错误:
- Timeout(超时)
- 定义执行完成的时间长度。定义超时可防止无限期等待执行。
- Retry
- 定义重试失败的执行的条件。
- fallback
- 在执行失败时提供替代方案。
- CircuitBreaker
- 定义在临时停止前失败的执行尝试次数。您可以在恢复执行前定义延迟的长度。
- bulkhead
- 在系统的一部分隔离故障,以便系统的其余部分仍然可以正常工作。
- asynchronous
- 在单独的线程中执行客户端请求。
2.2.2. JBoss EAP 中的 MicroProfile Fault Tolerance 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
microprofile-fault-tolerance-smallrye 子系统为 JBoss EAP 中的 MicroProfile Fault Tolerance 提供支持。子系统仅在 JBoss EAP XP 流中可用。
microprofile-fault-tolerance-smallrye 子系统为拦截器绑定提供以下注释:
-
@timeout -
@retry -
@Fallback -
@CircuitBreaker -
@Bulkhead -
@Asynchronous
您可以在类级别或方法级别上绑定这些注解。绑定到某个类的注解适用于该类的所有业务方法。
以下规则适用于绑定拦截器:
如果组件类声明或继承类级拦截器绑定,则有以下限制:
- 不得声明最终的类。
- 类不得包含任何静态、私有或最终方法。
- 如果一个非静态的、组件类的非私有方法声明方法级别拦截器绑定,则方法和组件类都不能声明最终声明。
容错操作有以下限制:
- 容错拦截器绑定必须应用到 bean 类或 bean 类方法。
- 调用时,调用必须是 Jakarta 上下文和依赖注入规范中定义的业务方法调用。
如果这两个条件都满足,则操作不被视为容错:
- 该方法本身不绑定到任何容错拦截器。
- 包含方法的类不绑定到任何容错拦截器。
除了 MicroProfile Fault Tolerance 提供的配置选项外,microprofile-fault-tolerance-smallrye 子系统还提供以下配置选项:
-
io.smallrye.faulttolerance.mainThreadPoolSize -
io.smallrye.faulttolerance.mainThreadPoolQueueSize
其它资源