Mule foreach:Splitter没有返回任何结果

时间:2014-03-07 03:59:11

标签: mule mule-studio

我获得了亚马逊S3上的文件列表,并迭代文件列表并一次处理一个文件。相应的流程如下 -

<flow name="process-from-s3" doc:name="process-from-s3"
    processingStrategy="synchronous">
    <poll doc:name="Poll" frequency="${s3-poll-interval}">
        <s3:list-objects config-ref="Amazon_S3" doc:name="Get List of files"
            accessKey="${s3-access-key}" secretKey="${s3-secret-key}"
            bucketName="${s3-read-bucket}" />
    </poll>
    <choice doc:name="Choice">
            <foreach doc:name="For Each">
                <set-session-variable variableName="s3_file_name" value="#[payload.getKey()]" doc:name="Session Variable"/>
                <logger message="From bucket ( ${s3-read-bucket} ), received the file #[s3_file_name]" level="INFO" doc:name="Logger"/>
                <flow-ref name="process_s3_file" doc:name="Flow Reference"/>
            </foreach>
    </choice>
</flow>

流程运行良好,但如果找不到文件,它会继续吐出以下日志语句。

[03-06 21:52:05] WARN  Foreach$CollectionMapSplitter   
[[myapp].connector.polling.mule.default.receiver.01]: Splitter returned no results. 
If this is not expected, please check your split expression

如何避免这种恼人的日志消息。如果列表中至少有一个元素,我应该将foreach包装在处理foreach的选择路由器中吗?欢迎任何建议。

1 个答案:

答案 0 :(得分:2)

我宁愿将org.mule.routing.Foreach$CollectionMapSplitter的日志级别设置为ERROR,而不是为此警告配置任何其他逻辑。如果需要,请参阅Mule docs以配置logger / log4j。