首页 > 解决方案 > Spring Integration - 查看尚未添加的消息的 ReleaseStrategy

问题描述

我有消息按组(例如 50 条)提取到系统,需要按 AGGREGATION_ID 分组到消息列表中,然后进一步发送到流中。

我可以使用correlationStrategy 与该ID 进行聚合,但我需要知道何时发布聚合消息。在 ReleaseStrategy 中,我只能查看已添加到聚合中的消息,但我需要知道何时在获取的 50 条具有相同 AGGREGATION_ID 的组中没有更多消息才能知道何时发送该组。我怎样才能做到这一点?

标签: javaspringspring-integrationaggregate

解决方案


AReleaseStrategy可以是可以完全访问整个应用程序上下文的任何 bean。如果您在聚合之前在某个地方存储这些消息,那么您绝对可以从自定义ReleaseStrategy实现中查看该位置。

另一方面,我建议查看groupTimeout聚合器的选项:https ://docs.spring.io/spring-integration/docs/5.3.0.M4/reference/html/message-routing.html# agg-and-group-to。因此,在正常行为下,您的群组将根据预期大小收集50,但是当在一段时间内没有新消息发送给群组时,将释放一个群组,其中包含到目前为止的任何信息。您还可以将其配置groupTimeout为 SpEL 表达式,因此也可以访问应用程序上下文。


推荐阅读