gpt4 book ai didi

mule - 如何在 Mule foreach 范围内捕获异常但保持流程继续进行?

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

我是 Mule ESB 的新手。我创建了一个简单的流程,它循环遍历订单列表并调用 Magento API 来逐一更新订单状态。我的问题是,如果foreach范围内发生任何异常,整个过程都会顶上。我尝试使用异常策略来捕获异常,它确实捕获了异常。但是如何恢复这个过程?我没有用谷歌搜索找到太多信息。也许我在流程上做错了什么。我们通常如何在 Mule 中处理这个问题?

这是我在 xml 中的流程。

    <flow name="Update_Magento_Order_Status_AU" doc:name="Update_Magento_Order_Status_AU" initialState="started">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="10" timeUnit="MINUTES"/>
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="GET_ORDERS_BY_STATUS_QUERY" queryTimeout="-1" connector-ref="DSEDatabase" doc:name="Get Orders By Status"/>
</poll>
<flow-ref name="ProcessOrderStastusUpdate" doc:name="Process Order Status Update"/>
</flow>
<flow name="ProcessOrderStastusUpdate" doc:name="ProcessOrderStastusUpdate">
<foreach collection="#[payload]" doc:name="For Each">
<component doc:name="Set Magento Order Status for Update">
<singleton-object class="com.dse.esb.component.OrderStatusMapperComp">
<property key="as400OrderStatuses" value="${as400.orderstatuses}"/>
<property key="magentoOrderStatuses" value="${magento.orderStatuses}"/>
</singleton-object>
</component>
<logger message="About to update Magento Order Status" level="INFO" doc:name="Logger"/>
<magento:add-order-comment config-ref="Magento" comment="Updated by Mule ESB with AS400 order status: #[payload.TRNSTS]" orderId="#[payload.EPGORDNBR]" status="#[flowVars['magentoOrderStatus']]" doc:name="Update Magento Order Status"/>
</foreach>
<choice-exception-strategy doc:name="Choice Exception Strategy">
<catch-exception-strategy doc:name="default">
<logger message="Handle default exception" level="INFO" category="==============&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;" doc:name="Logger"/>
</catch-exception-strategy>
</choice-exception-strategy>
</flow>

最佳答案

为 for-each 的内容使用私有(private)流,并具有自己的异常策略。异常将在私有(private)流中处理,并且父流应该能够继续。就像是:

<flow name="ProcessOrderStastusUpdate">
<foreach collection="#[payload]" doc:name="For Each">
<flow-ref name="privateFlow" />
</foreach>
</flow>

<flow name="privateFlow">
<component doc:name="Set Magento Order Status for Update">
<singleton-object class="com.dse.esb.component.OrderStatusMapperComp">
<property key="as400OrderStatuses" value="${as400.orderstatuses}"/>
<property key="magentoOrderStatuses" value="${magento.orderStatuses}"/>
</singleton-object>
</component>
<logger message="About to update Magento Order Status" level="INFO" doc:name="Logger"/>
<magento:add-order-comment config-ref="Magento" comment="Updated by Mule ESB with AS400 order status: #[payload.TRNSTS]" orderId="#[payload.EPGORDNBR]" status="#[flowVars['magentoOrderStatus']]" doc:name="Update Magento Order Status"/>


<choice-exception-strategy doc:name="Choice Exception Strategy">
<catch-exception-strategy doc:name="default">
<logger message="Handle default exception" level="INFO" category="==============&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;" doc:name="Logger"/>
</catch-exception-strategy>
</choice-exception-strategy>
</flow>

关于mule - 如何在 Mule foreach 范围内捕获异常但保持流程继续进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22825397/

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