«Читать несколько файлов из разных мест одновременно и объединять их в одну полезную нагрузку» - PullRequest
0 голосов
/ 10 мая 2019

Я читаю несколько файлов из разных папок и объединяю их в один, но не могу объединить в один файл.

Я использую композитный источник, где я добавил два файловых коннектора, затем записываю полезную нагрузку в регистратор. полезную нагрузку я получаю по одному. Как я могу получить одну комбинацию полезной нагрузки двух разных полезных нагрузок или несколько файлов ввода?

<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 голосов
/ 11 мая 2019

file:inbound-endpoint будет опрашивать один каталог, поэтому если вам нужны другие каталоги, которые не будут работать.

composite-source позволяет, но они не будут доступны в той же полезной нагрузке.

file:outbound-endpoint только для записи файлов.

В Mule 3 вы можете достичь этого, хотя бы с помощью комбинации poll для запуска потока, разброса-сбора для маршрутизации на несколько процессоров и модуля запрашивающего мула для чтения файлов в середине потока.

Модуль запроса мула: 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>
...