gpt4 book ai didi

Mule 流执行因 SMTP 发送中的错误而意外 split

转载 作者:行者123 更新时间:2023-12-02 02:01:56 25 4
gpt4 key购买 nike

我想从 SMTP 端点捕获错误(例如,如果它配置错误或服务器已关闭),当发生这种情况时,阻止消息继续正常路径,而是进入异常流。异常处理程序起作用,消息被路由到异常流中。出乎意料的是,该消息被复制并且也继续“正常”流程。我希望它只朝一个方向发展:如果电子邮件发送成功,则进入正常端点,如果发送失败,则进入异常端点。

在下面提供的示例中,smtp 因 UnknownHostException 而失败,并且消息进入 failureEndpoint,但由于某种原因,消息也以 outboundEndpoint 结束:

<mule><!-- namespaces omitted for readability -->
<flow name="sample-flowFlow1" doc:name="sample-flowFlow1">
<inbound-endpoint ref="inboundEndpoint" doc:name="AMQP Consumer"/>
<smtp:outbound-endpoint host="foobaz" to="test@example.com" from="test@example.com" subject="test" responseTimeout="10000" doc:name="SMTP"/>
<outbound-endpoint ref="outboundEndpoint" doc:name="AMQP Publisher"/>
<exception-strategy ref="FailureNotification" doc:name="Publish failure notification" />
</flow>

<catch-exception-strategy name="FailureNotification">
<flow-ref name="FailureNotificationFlow" doc:name="Flow Reference" />
</catch-exception-strategy>
<sub-flow name="FailureNotificationFlow" doc:name="FailureNotificationFlow">
<outbound-endpoint ref="failureEndpoint" doc:name="Failure Endpoint"/>
</sub-flow>
</mule>

当在 inboundEndpoint 上发布消息并且 SMTP 连接器按照提供的示例中的方式配置错误时,我希望仅在 failureEndpoint 中看到该消息,而不是在 outboundEndpoint 和 failureEndpoint 中。我该如何实现?

骡子版本:3.4.0

最佳答案

在此流程中,您使用了多个出站。该流程不等待 smtp 的响应,仍然继续下一个出站。
在继续出站之前,可以添加一个条件来检查 smtp 是否成功。

修改后的流程如下所示。试试这个。

<flow name="sample-flowFlow1" doc:name="sample-flowFlow1">
<inbound-endpoint ref="inboundEndpoint" doc:name="AMQP Consumer"/>
<flow-ref name="mailingFlow" ></flow-ref>
<choice>
<when expression="#[flowVars['mailingSuccess'] == 'failure']">
<logger level="INFO" message="Mailing failed"></logger>
</when>
<otherwise>
<outbound-endpoint ref="outboundEndpoint" doc:name="AMQP Publisher"/>
</otherwise>
</choice>
</flow>

<flow name="mailingFlow" processingStrategy="synchronous" >
<smtp:outbound-endpoint host="foobaz" to="test@example.com" from="test@example.com" subject="test" responseTimeout="10000" doc:name="SMTP"/>
<catch-exception-strategy name="FailureNotification">
<set-variable variableName="mailingSuccess" value="failure" ></set-variable>
<flow-ref name="FailureNotificationFlow" doc:name="Flow Reference" />
</catch-exception-strategy>
</flow>

<sub-flow name="FailureNotificationFlow" doc:name="FailureNotificationFlow">
<outbound-endpoint ref="failureEndpoint" doc:name="Failure Endpoint"/>
</sub-flow>

希望对你有帮助

关于Mule 流执行因 SMTP 发送中的错误而意外 split ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16821298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com