Catch Exception策略没有调用在dataMapper上读取file..error的简单场景...将文件移动到错误文件夹

时间:2014-11-12 16:51:11

标签: mule

(今天进一步更新:来自DataMapper处理器的异常不会触发CathcExcpetionStratey。来自其他组件的异常会被捕获。这听起来像是DataMapper的错误!我们正在使用3.5.x骡子有人遇到过这个吗?)

我有一个简单的用例"从文件夹中读取xml文件,使用dataMapper将其转换为另一种格式...一旦完成,将此文件移动到已处理文件夹"。这非常有效。但后来我将CatchExceptionStrategy添加到"用datamapper(或其他)捕获所有错误,并在本节中,将错误的xml文件移动到errors文件夹。 我的问题是没有调用CatchExceptionStrategy。控制台显示错误发生....但不调用CatchExceptionStragey。这是流程......

 <flow name="FLOW_xml" doc:name="FLOW_xml" doc:description="this using XML in and customer format output">
    <file:inbound-endpoint path="D:\inpath" pollingFrequency="5000" responseTimeout="10000" doc:name="XML Folder Source" />

    <object-to-string-transformer doc:name="Object to String "/>

    <data-mapper:transform config-ref="DataMapper_XmlToInternal" stream="true" pipeSize="5000" doc:name="DataMapper_XmlToInternal">
        <data-mapper:input-arguments>
            <data-mapper:input-argument key="SourceType">XML</data-mapper:input-argument>
            <data-mapper:input-argument key="SourceFileName">#[message.inboundProperties['originalFilename']]</data-mapper:input-argument>
        </data-mapper:input-arguments>
    </data-mapper:transform>

    <file:outbound-endpoint path="D:\outpath" outputPattern="#[message.inboundProperties['originalFilename']+'.json']" responseTimeout="10000" doc:name="FilePathToInternal"/>

     <response>
            <logger message="++++END OF PROCESS REACHED++++" level="ERROR" doc:name="Logger"/> 
      </response>

    <catch-exception-strategy doc:name="Catch Exception Strategy">
        <set-payload value="Error has occurred....." doc:name="Set Payload"/>
        <logger level="ERROR" doc:name="Logger" message="Exception caught... #[message.payload]"/>

    </catch-exception-strategy>

</flow>

看起来应该很简单。相同的方法适用于HTTP inboud / outbound示例....出错时它会进入CES​​部分并执行客户输出。

有人能说出我的做法是否有问题吗?

1 个答案:

答案 0 :(得分:0)

如果启用了流媒体模式,则transfirmation是懒惰的并且不会引发异常。这是一个已知的限制。

请尝试不使用流媒体模式。