2014-11-06 2 views
0

Я собираю входящее сообщение в XML (используя JAXB) в ByteArrayOutputStream и отправляю в SFTP с использованием связанного канального адаптера.Spring Integration: задайте имя полезной нагрузки перед отправкой на канал (тип полезной нагрузки - ByteArrayOutputStream)

outputChannel.send(new GenericMessage<ByteArrayOutputStream>(bos)); 

Все работает хорошо, но имя файла с именем, как «59262ea2-ACDA-e2be-770 °-f4073390c191.msg»

Я хотел бы сохранить файл с определенным именем на основе Incoming сообщение.

Incoming message is like : Message{name='myfilename'; field='abc'} 

XML File : <MYMessage> <name>myfilename</name> <MYMessage> 

Я использовала дистанционное имя файла-генератор-выражение = "payload.getName() + '.xml'", чтобы сохранить расширение файла, как "XML" тоже хорошо работает.

используя «remote-filename-generator», мне нужно сделать дополнительную работу для создания имени файла.

Просто сбрасывать я могу задать имя полезной нагрузки перед отправкой на канал?

Благодаря

ответ

1

Не ясно, как вы собираетесь получить имя файла из ByteArrayOutputStream ...

Однако remote-filename-generator-expression может получить доступ к MessageHeaders.

Так что, если вы будете иметь возможность указать имя файла в качестве заголовка, будет вполне достаточно, чтобы это:

remote-filename-generator-expression="headers[fileName] + '.xml'" 
+0

Я использовал окончательный ByteArrayOutputStream Baos = новый ByteArrayOutputStream(); marshaller.marshal (msg, baos); outputChannel.send (новый GenericMessage (baos.toByteArray())); Теперь с вашим предложением это работает как шарм. Благодарю. – shiv

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