java - Spring Integration - 查看尚未添加的消息的 ReleaseStrategy
问题描述
我有消息按组(例如 50 条)提取到系统,需要按 AGGREGATION_ID 分组到消息列表中,然后进一步发送到流中。
我可以使用correlationStrategy 与该ID 进行聚合,但我需要知道何时发布聚合消息。在 ReleaseStrategy 中,我只能查看已添加到聚合中的消息,但我需要知道何时在获取的 50 条具有相同 AGGREGATION_ID 的组中没有更多消息才能知道何时发送该组。我怎样才能做到这一点?
解决方案
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 表达式,因此也可以访问应用程序上下文。
推荐阅读
- javascript - 为什么HTML拖放数据传输成为iframe内部的对象
- amazon-web-services - terraform apply 试图破坏手动删除的启动配置
- angular - 如何在Angular中动态呈现markdown文件?
- glob - Glob 用于除单个文件夹外的所有文件扩展名
- c# - 如何在没有数据测试入口点的情况下测试服务
- networking - UNC 路径故障排除
- django - Django Channels 或 StreamingHttpResponse 是否满足我的需求?
- excel-formula - 生成随机电话号码
- git - 如果 master 有此分支的还原,则从 master 重新设置一个分支
- c++ - 使用 SDL_PollEvent 与 SDL_PumpEvents