Поведение агрегатора при перезапуске сервера - весенняя интеграция
Помещение -
В весенней интеграции, если у меня есть агрегатор с группой сообщений, которая является неполной. Перед выполнением стратегии освобождения группы сервер перезапускается.
- Текущее поведение-> все сообщения, отправленные в агрегатор, попадают в одну и ту же группу сообщений, а не в новую, поскольку она не помечена как завершенная, сообщения продолжают поступать.
- Ожидаемый-> Если сервер перезапущен, агрегатор выбирает оставшиеся сообщения из хранилища сообщений, помечает уже сохраненные, завершенные и затем обслуживает новые,
Мои ожидания неверны? Может ли кто-нибудь руководить?
1 ответ
Я думаю, что мы можем достичь ваших требований с MessageGroupStoreReaper
, который вы запустите только при запуске сервера, например, через перехват ContextRefreshedEvent
:
MessageGroupStore поддерживает список этих обратных вызовов, которые он применяет, по запросу, ко всем сообщениям, чья временная метка раньше времени, указанного в качестве параметра (см. Методы registerMessageGroupExpiryCallback(..) и expireMessageGroups(..) выше).
Метод expireMessageGroups может быть вызван со значением времени ожидания. Срок действия любого сообщения старше текущего времени за вычетом этого значения истечет, и к нему будут применены обратные вызовы. Таким образом, именно пользователь хранилища определяет, что подразумевается под группой сообщений "срок действия".
http://docs.spring.io/spring-integration/reference/html/messaging-routing-chapter.html