首页 > 解决方案 > MuleSoft 4 - 我如何将错误从 Http:Request 路由到我的主错误处理程序?

问题描述

我想将我的路由到Anypoint Studio 7http:request的主要(或次要)error handler

我似乎没有明确的方法。并且该文档没有针对此特定案例的指南。

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

标签: mulemule-studioanypoint-studio

解决方案


您可以error-handler在执行http:request. 如果您没有发现错误,它将冒泡到调用流程等等。如果没有配置错误处理程序,将使用默认的 mule ,它基本上只记录消息。

在 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:禁止

    HTTP:未经授权

    HTTP:RETRY_EXHAUSTED

    HTTP:NOT_FOUND

    HTTP:BAD_REQUEST

    HTTP:解析

    HTTP:超时

    HTTP:安全

每个模块的文档都应该包含该模块抛出的所有特定错误类型。这是 HTTP 一个示例: https ://docs.mulesoft.com/connectors/http/http-documentation#throws

这是您可以捕获的核心错误类型的完整列表,EXPRESSION例如:

https://docs.mulesoft.com/mule-runtime/4.1/mule-error-concept


推荐阅读