Mule ESB如何正常退出事务

时间:2013-12-20 17:54:45

标签: transactions mule mule-studio

我正在使用Mule Studio,我的流程中有一个交易。如果找不到文件,我想退出事务而不会抛出错误。 Mule异常堆栈跟踪在日志中是巨大而丑陋的。

有没有办法去死< transaction-end>或者其他的东西?

此时我会考虑某种形式的标记来停止一起处理消息。

代码乱来举例但这里有一段摘录:

<transactional action="ALWAYS_BEGIN" doc:name="Transactional">
    <flow-ref name="ingest_provider" doc:name="Ingest Provider"/>
    <flow-ref name="create_asset" doc:name="Create Asset"/>
    <foreach collection="#[payload['Asset Resource']]" doc:name="Foreach Asset Resource">
        <or-filter doc:name="Only movie or preview"> 
            <expression-filter expression="#[payload['resource_class']=='movie']"/>  
            <expression-filter expression="#[payload['resource_class']=='preview']"/>  
        </or-filter>
        <expression-transformer expression="payload.put('resource_guid', payload.guid); payload" doc:name="Expression"/>

        <choice doc:name="Choice">
            <when expression="#[!fileExists(new File('${ipvod.ingest.in.av}', payload.Content[0].filename).toString())]">                           
                <logger message="Could not locate resource_file=#[new File('${ipvod.ingest.in.av}', payload.Content[0].filename).toString()] for asset_guid=#[flowVars.asset_guid]" level="ERROR" doc:name="Logger"/>
                <set-payload value="#[asset_guid]" doc:name="Set Payload"/>

<!-- I'd like the code to die here -->
                <scripting:component doc:name="Script">
                    <scripting:script engine="Groovy"><![CDATA[
                                throw new Exception('File Not Found!')
                    ]]></scripting:script>
                </scripting:component>
            </when>
        </choice>

1 个答案:

答案 0 :(得分:0)

如果你想优雅退出,我建议你选择Mule Exception Strategy。

这是Mule的例外策略用例的链接,其中有一些例子。

http://www.mulesoft.org/documentation-3.2/display/32X/Exception+Strategy+Most+Common+Use+Cases

希望这有帮助。