Интеграция с Spring Выполнение задачи Splitter

Я работаю над приложением Spring Integration.

У меня есть адаптер входящего канала, который читает каталог. Затем разделитель, который разбивает файл на строки. Наконец, адаптер исходящего канала udp, который отправляет строки.

<int-file:inbound-channel-adapter prevent-duplicates="false"
          id="filesIn" directory="file:input" channel="inputFiles" />

<int:splitter  input-channel="inputFiles" output-channel="udpChannel_11111"
         expression="T(org.apache.commons.io.FileUtils).lineIterator(payload)" />

<!-- Define UDP outbound channel -->
<int:channel id="udpChannel_11111" />
<int-ip:udp-outbound-channel-adapter channel="udpChannel_11111"
        host="192.168.0.1" port="11111" />

Я хотел бы отправлять строку каждую секунду

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

заранее спасибо


person Ludo    schedule 19.06.2015    source источник


Ответы (1)


Поместите сообщения в QueueChannel и используйте опросник для отправки один раз в секунду.

Адаптер канала UDP в настоящее время не поддерживает опросчик, но вы можете использовать мост...

<int:splitter  input-channel="inputFiles" output-channel="udpChannel_11111"
     expression="T(org.apache.commons.io.FileUtils).lineIterator(payload)" />

<int:channel id="toBridge">
    <int:queue />
</int:channel>

<int:bridge input-channel="toBridge" output-channel="udpChannel_11111">
    <int:poller fixed-delay="1000" max-messages-per-poll="1" />
</int:bridge>

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

person Gary Russell    schedule 19.06.2015