2015-09-20 2 views
0

Я хочу написать партию, которая читает файлы журнала доступа к сайту (csv-файл) с пути каждый день и делает некоторый анализ, используя интеграцию с весной.Spring Integration: Есть ли способ объединиться из «всех» сообщений в канале?

Это упрощенная версия входного файла csv.

 
srcIp1,t1,path1 
srcIp2,t2,path2 
srcIp1,t3,path2 
srcIp1,t4,path1 

Номер доступа на источник ip и путь рассчитывается после некоторой логики фильтрации.

Я создал входной канал, чья полезная нагрузка - это анализируемая строка журнала, и применяется фильтр, и, наконец, агрегатор для вычисления конечного результата. Проблема заключается в том, что должно быть правильной группой релизов stragety, по умолчанию релиз stragety (SequenceSizeReleaseStrategy) не работает.

Кроме того, любой другой пружинной integraion из выпуска коробки

стратегии (ExpressionEvaluatingReleaseStrategy, MessageCountReleaseStrategy, MethodInvokingReleaseStrategy, SequenceSizeReleaseStrategy, TimeoutCountSequenceSizeReleaseStrategy)

, кажется, не соответствует моим потребностям.

Или интеграция Spring предполагает, что канал несет поток сообщений, где нет понятия «окончание сообщения» и не подходит для моей проблемы здесь?

ответ

0

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

Или вы можете использовать group-timeout для освобождения частичной группы через некоторое время, когда не поступило сообщений.

+0

Канал просматривает свою полезную нагрузку в качестве потока сообщений. Проблема заключается в том, что в контексте сообщения в строке отсутствует хороший способ наложения релиз-stragety. Поэтому я изменил тип полезной нагрузки на одно сообщение «все строки все файлы "вместо одного сообщения в строке. Не очень хорошая идея, но не могла придумать лучшего. –

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