2014-02-07 3 views
3

Я получаю путь к файлу в качестве входа в mule внутри xml. Используя выражение XPATH, я могу извлечь путь. Я хочу прочитать конкретный файл с этого пути. Я попытался определить конечную точку входящего файла, как показано ниже. Но, похоже, это не работает.Невозможно создать динамическую конечную точку входящего файла в mule

<flow name="flow1"> 
    .... 
    .... 
    <set-session-variable variableName="filePath" value="#[xpath://filePath]" /> 
    <flow-ref name="fileFlow"/> 
    </flow> 

    <flow name="fileFlow"> 
    <file:inbound-endpoint path="#[header:SESSION:filePath]" /> 
    </flow> 

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

ответ

4

К сожалению, вы не можете программным способом вызывать входящую-конечную точку.

Однако та же функциональность может быть достигнута с помощью Mule модуля реквестера:

Пример:

<flow name="RequestFile" doc:name="RequestFile"> 
     <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="requestfile" doc:name="HTTP"/> 
     <mulerequester:request config-ref="Mule_Requester" resource="file:///s/tmp/demorequester/read/#[message.inboundProperties['filename']]" returnClass="java.lang.String" doc:name="Request a file"/> 
    </flow> 

Инструкция здесь: https://github.com/mulesoft/mule-module-requester и https://blogs.mulesoft.com/dev/mule-dev/introducing-the-mule-requester-module/

+0

Чтение файлов довольно просто с помощью Groovy, а также. Если вы хотите прочитать текстовый файл в String, вам просто нужно: новый файл (message.getSessionProperty ('filePath')). Или есть какая-то причина предпочесть модуль-запросчик? –

+0

@ Ryan Carter Он работал как магия. Очень полезно – tortoise

+1

@AntonKupias Проблема с использованием прямого доступа к файлам вместо прохождения транспорта Mule File заключается в том, что вы пропускаете всю обработку ошибок, статистику ..., которую добавляет Mule. Поэтому вместо использования необработанного файла перед добавлением модуля requester вам пришлось бы использовать Groovy для вызова 'muleContext.client.request ('file: /// the_file', timeout)' для фактического использования транспорта файлов Mule , –

Смежные вопросы