Поведение агрегатора при перезапуске сервера - весенняя интеграция

Помещение -

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

  • Текущее поведение-> все сообщения, отправленные в агрегатор, попадают в одну и ту же группу сообщений, а не в новую, поскольку она не помечена как завершенная, сообщения продолжают поступать.
  • Ожидаемый-> Если сервер перезапущен, агрегатор выбирает оставшиеся сообщения из хранилища сообщений, помечает уже сохраненные, завершенные и затем обслуживает новые,

Мои ожидания неверны? Может ли кто-нибудь руководить?

1 ответ

Решение

Я думаю, что мы можем достичь ваших требований с MessageGroupStoreReaper, который вы запустите только при запуске сервера, например, через перехват ContextRefreshedEvent:

MessageGroupStore поддерживает список этих обратных вызовов, которые он применяет, по запросу, ко всем сообщениям, чья временная метка раньше времени, указанного в качестве параметра (см. Методы registerMessageGroupExpiryCallback(..) и expireMessageGroups(..) выше).

Метод expireMessageGroups может быть вызван со значением времени ожидания. Срок действия любого сообщения старше текущего времени за вычетом этого значения истечет, и к нему будут применены обратные вызовы. Таким образом, именно пользователь хранилища определяет, что подразумевается под группой сообщений "срок действия".

http://docs.spring.io/spring-integration/reference/html/messaging-routing-chapter.html

Другие вопросы по тегам