如何遍历Mule中的文件内容

时间:2014-09-16 10:54:47

标签: mule mule-studio

我在特定目录中有一个文本文件。我必须阅读该文件的内容并为此进行API调用。

  1. 我使用文件连接器来读取文件
  2. 我使用'File to Byte Array'变换器作为每个范围
  3. 在下面的示例中,我使用了记录器。但我需要向出站端点发出HTTP请求。
  4. 但是得到以下信息
    org.mule.routing.ExpressionSplitter:表达式不会计算为可拆分的类型:[B

    下面是mule xml内容。有人可以帮助我吗?

    <file:connector name="File_Input" autoDelete="false" streaming="true" validateConnections="true" doc:name="File"/>
    
    <flow name="testxmlFlow1" doc:name="testxmlFlow1"> 
        <file:inbound-endpoint path="C:\mule_program_test\input" responseTimeout="10000" doc:name="File" moveToPattern="data.txt" connector-ref="File_Input"></file:inbound-endpoint>
        <file:file-to-byte-array-transformer doc:name="File to Byte Array"/>
        <foreach doc:name="For Each" collection="#[payload]">
            <logger message="Messagesssssssssssssss" level="INFO" doc:name="Logger"/>
        </foreach>
    </flow>
    

1 个答案:

答案 0 :(得分:1)

您不需要使用foreach依次处理每个文件,因为文件连接器会为它在目录中发现的每个文件生成一条消息。您的流将针对放置在该目录中的每个文件运行。

此外,文件连接器根据其pollingFrequency,通过每隔一段时间检查新文件来监视目录。由于您还没有指定,我认为默认值是1000毫秒,这意味着它将每秒处理一次目录中的所有文件。此外,您已配置autoDelete =&#34; false&#34;并且尚未配置moveToDirectory。这意味着文件在处理后将保留在目录C:\ mule_program_test \ input中,因此每个轮询周期都会再次处理它们。

如果您只想处理每个文件一次,请使用moveToDirectory和/或autoDelete确保在下一轮询周期内不再处理它。