Spring Integration - ReleaseStrategy, которая просматривает сообщения, которые еще не были добавлены - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть сообщения, которые извлекаются в систему группами (скажем, 50), их нужно сгруппировать по AGGREGATION_ID в списки сообщений и отправить дальше в поток.

Я могу использовать correlationStrategy для объединения с этот идентификатор, но мне нужно знать, когда выпустить агрегированное сообщение. В ReleaseStrategy я могу только просматривать сообщения, уже добавленные в агрегат, но мне нужно знать, когда в выбранной группе из 50 с таким же AGGREGATION_ID больше нет сообщений, чтобы знать, когда отправлять группу. Как я могу это сделать?

1 Ответ

2 голосов
/ 06 апреля 2020

A ReleaseStrategy может быть любым компонентом с полным доступом ко всему контексту приложения. Если у вас есть место, где вы храните эти сообщения перед агрегацией, вы определенно можете взглянуть на это место из пользовательской ReleaseStrategy реализации.

С другой стороны, я бы посоветовал взглянуть на groupTimeout опция агрегатора: https://docs.spring.io/spring-integration/docs/5.3.0.M4/reference/html/message-routing.html#agg -и-group-to . Таким образом, при нормальном поведении ваши группы будут собираться в соответствии с ожидаемым размером 50, но если в течение некоторого времени не будет новых сообщений для группы, группа будет освобождена с тем, что там до сих пор. Вы также можете настроить это groupTimeout как выражение SpEL, чтобы также был доступ к контексту приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...