如何在Mule中遍历文件内容

如何在Mule中遍历文件内容,mule,mule-studio,Mule,Mule Studio,我在特定目录中有一个文本文件。我必须读取文件的内容并为此调用API 我已经使用文件连接器来读取文件 对于每个作用域,我都使用了“文件到字节数组”转换器 在下面的示例中,我使用了logger。但我需要向出站端点发出HTTP请求 但是得到下面的消息 org.mule.routing.ExpressionSpliter:表达式的计算结果不是可拆分的类型:[B] 下面是mule xml的内容。有人能帮我吗 <file:connector name="File_Input" autoDelete="

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

  • 我已经使用文件连接器来读取文件
  • 对于每个作用域,我都使用了“文件到字节数组”转换器
  • 在下面的示例中,我使用了logger。但我需要向出站端点发出HTTP请求
  • 但是得到下面的消息
    org.mule.routing.ExpressionSpliter:表达式的计算结果不是可拆分的类型:[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>
    

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

    此外,文件连接器根据轮询频率每隔一段时间检查一次新文件来监视目录。由于您没有指定新文件,我认为默认值为1000ms,这意味着它将每秒处理一次目录中的所有文件。此外,您还配置了autoDelete=“false”并且尚未配置moveToDirectory。这意味着文件在处理后将保留在目录C:\mule\u program\u test\input中,因此将在每个轮询周期再次处理这些文件


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

    Hi Ryan,我的文件是一个txt文件,并且在每一行中都有一些ID列表。我想对文件中的每个ID进行API调用。这就是我希望为每个sco实现的原因pe.您给for each的表达式没有返回集合,这就是为什么您会看到错误消息。请尝试将其更改为#[payload.split('\n')]Hi Ryan。非常感谢。它很有效。我插入了HTTP连接器并调用了API。