MuleSoft 4-如何将错误从Http:Request路由到我的主要错误处理程序?

时间:2018-12-13 11:33:21

标签: mule mule-studio anypoint-studio

我想将我的http:request路由到 Anypoint Studio 7

中的主要{或次要} error handler

我似乎没有清晰的方式。 而且文档没有针对此特定案例的指南。

在我的情况下是必须的,我需要知道并向另一个服务发送信号并传达错误响应,例如:connection_timeout

1 个答案:

答案 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