“同时从不同位置读取多个文件并将它们合并为一个有效负载”

时间:2019-05-10 07:11:13

标签: mule mule-studio mule-component mule-el mule-esb

我正在从不同的文件夹中读取多个文件,并将它们合并为一个,但是无法合并为一个文件。

我正在使用复合源,在其中添加了两个文件连接器,然后将有效负载记录到记录器中。有效负载我一一得到。如何获得两种不同有效负载或多个文件输入的一种有效负载组合?

<flow name="file2Flow">
    <composite-source doc:name="Copy_of_Composite Source">
        <file:inbound-endpoint path="src/main/resources/input1" responseTimeout="10000" doc:name="File"/>
        <file:inbound-endpoint path="src/main/resources/input2" responseTimeout="10000" doc:name="File"/>
    </composite-source>
    <file:file-to-string-transformer doc:name="File to String"/>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>

我也在尝试这个但没有得到输出

<flow name="file2file2Flow">
       <http:listener config-ref="HTTP_Listener_Configuration" path="/files" doc:name="HTTP"/>
       <scatter-gather doc:name="Scatter-Gather">
          <file:outbound-endpoint path="src/main/resources/input1" responseTimeout="10000" doc:name="File"/>
          <file:outbound-endpoint path="src/main/resources/input1" responseTimeout="10000" doc:name="File"/>
    </scatter-gather>
    <dw:transform-message doc:name="Transform Message">
         <dw:set-payload><![CDATA[%dw 1.0
       %output application/json
      ---
    {
       post1: payload[0],
       post2: payload[1]
       }]]>     
    </dw:set-payload>
        </dw:transform-message>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    </flow>

1 个答案:

答案 0 :(得分:0)

file:inbound-endpoint将轮询一个目录,因此如果您需要其他无法使用的目录。

composite-source允许,但它们不能在相同的有效载荷中使用。

file:outbound-endpoint仅用于写入文件。

在Mule 3中,您可以通过结合poll触发流,分散收集以路由到多个处理器以及通过Mule请求者模块读取流中的文件来实现此目的。

M子请求者模块:https://www.mulesoft.com/exchange/68ef9520-24e9-4cf2-b2f5-620025690913/requester-module/

粗略的例子:

<flow name="dw-testFlow">
        <poll doc:name="Poll" frequency="10000">
            <logger level="INFO" doc:name="Logger" />
        </poll>
        <scatter-gather doc:name="Scatter-Gather">
            <mulerequester:request config-ref="muleRequesterConfig" resource="myFileEndpoint" doc:name="Mule Requester" />
            <mulerequester:request config-ref="muleRequesterConfig" resource="myFileEndpoint" doc:name="Mule Requester" />
        </scatter-gather>
    </flow>