我想将我的http:request
路由到 Anypoint Studio 7
error handler
我似乎没有清晰的方式。 而且文档没有针对此特定案例的指南。
在我的情况下是必须的,我需要知道并向另一个服务发送信号并传达错误响应,例如:connection_timeout
答案 0 :(得分:0)
您可以在执行error-handler
的流程中使用http:request
捕获所需的错误。如果您没有捕获到错误,它将冒泡直至调用流,依此类推。如果未配置错误处理程序,则将使用默认的m子1,该basically子基本上只记录消息。
在Mule 4中,您可以像这样捕获流中的所有错误:
<flow name="retrieveMatchingOrders">
<http:request config-ref="customersConfig" path="/customer">
</http:request>
<error-handler>
<on-error-continue>
<!-- error handling logic -->
</on-error-continue>
</error-handler>
</flow>
on-error-continue
将执行并使用执行结果,作为其所有者的结果(就像所有者实际上已成功完成执行一样)。此时的任何交易也将被提交
因此,您可以在其中将有效负载设置为要返回的所需消息等。
还有一个on-error-propogate
处理程序和一个try
范围,有关这些的更多信息,请参见:https://docs.mulesoft.com/mule-runtime/4.1/intro-error-handlers
在Mule中引发的所有错误都包含元数据,包括TYPE。如果您需要捕获特定的HTTP错误,则可以按以下方式配置错误处理程序:
<error-handler>
<on-error-continue type="HTTP:TIMEOUT">
<!-- error handling logic -->
</on-error-continue>
</error-handler>
这是HTTP模块抛出的所有特定HTTP:错误的列表:
HTTP:UNSUPPORTED_MEDIA_TYPE
HTTP:可连接性
HTTP:INTERNAL_SERVER_ERROR
HTTP:METHOD_NOT_ALLOWED
HTTP:NOT_ACCEPTABLE
HTTP:TOO_MANY_REQUESTS
HTTP:SERVICE_UNAVAILABLE
HTTP:CLIENT_SECURITY
HTTP:FORBIDDEN
HTTP:未经授权
HTTP:RETRY_EXHAUSTED
HTTP:NOT_FOUND
HTTP:BAD_REQUEST
HTTP:PARSING
HTTP:超时
HTTP:SECURITY
每个模块的文档应包含该模块引发的所有特定错误类型。这是HTTP的一个示例: https://docs.mulesoft.com/connectors/http/http-documentation#throws
这是您可以捕获的核心错误类型的完整列表,例如EXPRESSION
:
https://docs.mulesoft.com/mule-runtime/4.1/mule-error-concept