Могу ли я получить имя файла, как # [header: originalFilename] в компоненте в mule3 - PullRequest
2 голосов
/ 31 октября 2011

Я использую

<gzip-compress-transformer/>
<base64-encoder-transformer/>

после коннектора файла, а затем запишите компонент для работы с содержимым gzip + base64. Как я могу получить имя файла в компоненте?

Ответы [ 3 ]

1 голос
/ 01 ноября 2011

Обратите внимание, что мы добавили аннотации в Mule 3 для выполнения внедрения во время выполнения, это означает, что вы можете указать, как вызывать компонент без использования преобразователей, т.е.

public void save (@Payload String fileContents, @InboundHeaders ("originalFilename") String originalFilename)

См .: http://www.mulesoft.org/documentation/display/MULE3USER/Creating+Service+Objects+and+Transformers+Using+Annotations

1 голос
/ 31 октября 2011

Ваш компонент реализует Callable ? Если нет, хотите ли вы, чтобы ваш компонент не знал о Mule?

На основании ваших ответов на эти вопросы существуют различные варианты:

  • С Callable вы получаете заголовки в message.getProperty ...
  • Без реализации Callable вы можете получить доступ к RequestContext, чтобы получить текущее событие Mule и оттуда добраться до свойств сообщения. Но это делает ваш компонент Mule осведомленным.
  • Иначе, пусть метод вашего компонента принимает второй параметр (String originalFilename) и использует преобразователь стандартного выражения для преобразования полезной нагрузки в массив, который содержит: #payload, # [header: originalFilename]. Затем эти массивы будут переданы в качестве аргументов методу вашего компонента.
0 голосов
/ 05 мая 2017

[message.outboundproperties [originalFilename]]

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

...