問題描述
WSO2 ESB:如何處理端點返回的內部錯誤 (WSO2 ESB: How to handle internal error returned by an endpoint)
我正在使用 CALL 調解器在端點上調用 Get 方法。端點返回 500 內部服務器錯誤,如下所示。但不是控制進入故障序列,調解流程照常繼續。如何路由到故障序列?如何處理 wso2 中的內部錯誤?
[2020‑02‑14 17:51:21,175] DEBUG {org.apache.synapse.transport.http.headers} ‑ http‑incoming‑1 << HTTP/1.1 500 Internal Server Error
[2020‑02‑14 17:51:21,175] DEBUG {org.apache.synapse.transport.http.headers} ‑ http‑incoming‑1 << HTTP/1.1 500 Internal Server Error
[2020‑02‑14 17:51:21,176] DEBUG {org.apache.synapse.transport.http.headers} ‑ http‑incoming‑1 << Strict‑Transport‑Security: max‑age=15638400; includeSubDomains
[2020‑02‑14 17:51:21,176] DEBUG {org.apache.synapse.transport.http.headers} ‑ http‑incoming‑1 << Strict‑Transport‑Security: max‑age=15638400; includeSubDomains
[2020‑02‑14 17:51:21,177] DEBUG {org.apache.synapse.transport.http.headers} ‑ http‑incoming‑1 << Access‑Control‑Allow‑Methods: POST, GET
[2020‑02‑14 17:51:21,177] DEBUG {org.apache.synapse.transport.http.headers} ‑ http‑incoming‑1 << Access‑Control‑Allow‑Methods: POST, GET
參考解法
方法 1:
WSO2 ESB does not hit fault sequence when the endpoint returns 500 because, irrespective of the response code, the mediation flow should proceed. We can retrieve the status code of the response and then trigger the fault sequence. A sample insequence is given below.
<inSequence>
<call>
<endpoint>
<http uri‑template="http://www.mocky.io/v2/5e465018330000520002605f"/>
</endpoint>
</call>
<filter source="$axis2:HTTP_SC" regex="500">
<then>
<sequence key="fault"/>
</then>
<else/>
</filter>
<respond/>
</inSequence>
(by ravi、Arunan Sugunakumar)