我想在我的 Web 應(yīng)用程序中使用 MP FaultTolerance 功能中的斷路功能。現(xiàn)在我不知道如何知道這個功能是否一直在我的應(yīng)用程序中工作。我想跟蹤 MP Fault Tolerance 自動添加的 MP Metrics 的值,如https://download.eclipse.org/microprofile/microprofile-fault-tolerance-2.0/microprofile-fault-tolerance-spec.html#fallback中所述我的應(yīng)用程序在 WAS Liberty 配置文件 19.0.0.6 上運行。我嘗試使用 /metrics 獲取所有指標(biāo),但只返回基本指標(biāo)。返回如下# 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我導(dǎo)入了包 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等等。當(dāng)我的應(yīng)用程序運行時,如何知道注釋 CircuitBreaker 正在工作?
1 回答

湖上湖
TA貢獻2003條經(jīng)驗 獲得超2個贊
看起來你做的一切都是對的,所以你看不到指標(biāo)的原因有兩種可能:
在方法被調(diào)用一次之前,指標(biāo)不會出現(xiàn)
您是否安裝了所需的功能?
如果您沒有同時安裝 mpFaultTolerance-1.1 和 mpMetrics-1.1,服務(wù)器仍會啟動,但您會在 messages.log 的頂部收到警告,說明哪些功能無法啟動或不存在。
注釋方法是 CDI bean 中的嗎?
容錯是使用攔截器實現(xiàn)的。要進行攔截,該方法需要在 CDI bean 上,您需要使用 將@Inject
bean 注入某處,然后您需要在注入的實例上調(diào)用該方法。
特別是,如果出現(xiàn)以下情況,則不會發(fā)生攔截:
您使用創(chuàng)建類的實例
new
您從同一個類中調(diào)用帶注釋的方法
至于測試你的斷路器是否工作,最簡單的方法通常是調(diào)用方法并檢查指標(biāo)是否出現(xiàn)。除此之外,您需要使您的方法失敗幾次并檢查您是否開始獲得CircuitBreakerOpenException
.
添加回答
舉報
0/150
提交
取消