我正在使用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>
答案 0 :(得分:0)
如果你想优雅退出,我建议你选择Mule Exception Strategy。
这是Mule的例外策略用例的链接,其中有一些例子。
http://www.mulesoft.org/documentation-3.2/display/32X/Exception+Strategy+Most+Common+Use+Cases
希望这有帮助。