Spring Integration: Разделение чтения файлов и фильтрация сообщений - PullRequest
0 голосов
/ 05 июля 2018

Я использую Spring Integration File Splitter (XML config) для чтения файла и обработки сообщений.

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

Другими словами, сообщения первой и последней строки должны быть отброшены, но его полезная нагрузка должна быть установлена ​​в качестве заголовка в остальных сообщениях.

Как мне этого добиться? Любая помощь будет оценена. Спасибо.

Ниже приведен код для чтения файла из каталога и его разбиения:

 <int-file:inbound-channel-adapter
    id="fileSource" channel="fileReceiverChannel"
    directory="file:${file.messagesource.directory}"
    prevent-duplicates="false" ignore-hidden="true" filename-regex="${filename.regex}" >
    <int:poller fixed-delay="5000" receive-timeout="5000" 
        task-executor="pollerExecutor">
    </int:poller>
</int-file:inbound-channel-adapter>

<int-file:splitter id="splitFile"
        input-channel="splitFileChannel" output-channel="transformChannel"
        charset="UTF-8" apply-sequence="true" iterator="false" />

1 Ответ

0 голосов
/ 05 июля 2018

Начиная с 5.0, вы можете setFirstLineAsHeader(true) на FileSplitter, и первая строка будет переноситься как заголовок во всех сообщениях.

Это first-line-as-header в конфигурации XML.

Нет механизма, чтобы сделать то же самое для «последней» строки; для этого вам понадобится специальная версия сплиттера. Не так просто прочитать последнюю строку, если только все строки не имеют одинаковую длину, вам сначала нужно прочитать весь файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...