Spring 集成 - 查看尚未添加的消息的 ReleaseStrategy
Spring Integration - ReleaseStrategy that looks at messages that weren't yet added
我有一些消息被分组提取到系统中(比如说 50 条),需要按 AGGREGATION_ID 分组到消息列表中并进一步发送到流程中。
我可以使用 correlationStrategy 与该 id 进行聚合,但我需要知道何时释放聚合消息。在 ReleaseStrategy 中,我只能查看已添加到聚合中的消息,但我需要知道何时在获取的 50 条消息中没有更多具有相同 AGGREGATION_ID 的消息才能知道何时发送该组。我该怎么做?
A ReleaseStrategy
可以是对整个应用程序上下文具有完全访问权限的任何 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 表达式,因此也可以访问应用程序上下文。
我有一些消息被分组提取到系统中(比如说 50 条),需要按 AGGREGATION_ID 分组到消息列表中并进一步发送到流程中。
我可以使用 correlationStrategy 与该 id 进行聚合,但我需要知道何时释放聚合消息。在 ReleaseStrategy 中,我只能查看已添加到聚合中的消息,但我需要知道何时在获取的 50 条消息中没有更多具有相同 AGGREGATION_ID 的消息才能知道何时发送该组。我该怎么做?
A ReleaseStrategy
可以是对整个应用程序上下文具有完全访问权限的任何 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 表达式,因此也可以访问应用程序上下文。