2015-06-19 3 views
1

Я работаю над приложением Spring Integration.Слизинг интеграции Выполнение задачи сплиттера

У меня есть въездной адаптер канала, читать каталог Тогда сплиттер, что разбить файл на линию Наконец УДП исходящего адаптера канала, который передает линию

<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-файле как можно более простым.

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

ответ

0

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

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

<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> 

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

+0

Спасибо, Гэри, он работает. – Ludo