为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Liberty 配置文件中使用 MicroProfile FaultTolerance

如何在 Liberty 配置文件中使用 MicroProfile FaultTolerance

白板的微信 2023-06-04 16:53:18
我想在我的 Web 应用程序中使用 MP FaultTolerance 功能中的断路功能。现在我不知道如何知道这个功能是否一直在我的应用程序中工作。我想跟踪 MP Fault Tolerance 自动添加的 MP Metrics 的值,如https://download.eclipse.org/microprofile/microprofile-fault-tolerance-2.0/microprofile-fault-tolerance-spec.html#fallback中所述我的应用程序在 WAS Liberty 配置文件 19.0.0.6 上运行。我尝试使用 /metrics 获取所有指标,但只返回基本指标。返回如下# TYPE base:classloader_total_loaded_class_count counter# HELP base:classloader_total_loaded_class_count Displays the total number of classes that have been loaded since the Java virtual machine has started execution.base:classloader_total_loaded_class_count 8853我导入了包 org.eclipse.microprofile.faulttolerance。注释 CircuitBreaker 到我的 java 代码中,并在这样的方法前面添加注释:@CircuitBreaker(successThreshold = 2, requestVolumeThreshold = 3, failureRatio = 0.5, delay = 1000)public void handle() throws ApiRequesterException{    ..........}我在 server.xml 中添加了如下功能<featureManager>     <feature>mpFaultTolerance-1.1</feature>     <feature>mpMetrics-1.1</feature></featureManager>如何获取Fault Tolerance添加的Metrics的值,比如ft.<name>.circuitbreaker.callsSucceeded.total,ft.<name>.circuitbreaker.callsSucceeded.total等等。当我的应用程序运行时,如何知道注释 CircuitBreaker 正在工作?
查看完整描述

1 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

看起来你做的一切都是对的,所以你看不到指标的原因有两种可能:

  1. 在方法被调用一次之前,指标不会出现

  2. 您是否安装了所需的功能?

如果您没有同时安装 mpFaultTolerance-1.1 和 mpMetrics-1.1,服务器仍会启动,但您会在 messages.log 的顶部收到警告,说明哪些功能无法启动或不存在。

  1. 注释方法是 CDI bean 中的吗?

容错是使用拦截器实现的。要进行拦截,该方法需要在 CDI bean 上,您需要使用 将@Injectbean 注入某处,然后您需要在注入的实例上调用该方法。

特别是,如果出现以下情况,则不会发生拦截:

  • 您使用创建类的实例new

  • 您从同一个类中调用带注释的方法

至于测试你的断路器是否工作,最简单的方法通常是调用方法并检查指标是否出现。除此之外,您需要使您的方法失败几次并检查您是否开始获得CircuitBreakerOpenException.


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信