2016-04-04 1 views
1

Я использую resequencer для обеспечения правильного порядка сообщений. Когда какой-то процесс с несколькими сообщениями заканчивается, я хотел бы снова запустить тот же процесс с тем же идентификатором корреляции. Он не работает, потому что группа сообщений для определенного идентификатора корреляции не завершена и все еще существует для resequencer, поэтому нет сообщения для выпуска (все сообщения переигрываются с начала, поэтому нет сообщения с большим порядковым номером, а затем последний из первого процесса когда-либо получен). Для aggregator можно установить expire-groups-upon-completion, но, похоже, такой функции нет для resequencer. Возможно ли получить описанную функциональность?Как заполнить группу в resequencer из интеграции весов

ответ

0

Проблема заключается в том, что в отличие от агрегатора нет концепции «завершения» с точки зрения resequencer - она ​​не знает, что группа «завершена».

Именно по этой причине он недоступен в качестве опции на самом повторителе.

Вы можете предоставить внешний фасоль MessageGroupStore - resequencer создает собственный SimpleMessageStore по умолчанию, но вы можете предоставить ссылку на свой собственный компонент.

Затем, когда вы знаете, что группа «завершена», вы можете позвонить removeMessageGroup() с идентификатором корреляции, и это приведет к сбросу параметра resequencer.

+0

Благодарим за быстрый ответ. Я могу представить некоторые примеры «завершения», такие как размер последовательности или выражение, применяемые к сообщению (например, для некоторого заголовка). К счастью, есть обходное решение из-за отсутствия этой функциональности, поэтому я попытаюсь выполнить ваше предложение. – Mikus

+0

Он работает как шарм. Еще раз спасибо. – Mikus

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