所有春季项目都有大量且非常有用的文档,春季整合项目也是如此,但是我希望能够收集大量信息的一个主题是消息组收割者。基本上,这似乎是一种可以从外部影响聚合器以释放某些消息的机制。目前尚不清楚与发布策略有何不同或相似之处。它实际上是从聚合器释放消息,以便它们随后由流中的后续组件处理,还是只是清空聚合器,就像丢弃聚合消息一样。其次,可以控制释放哪些消息,以便释放属于特定组的消息,但不释放其他消息。
最佳答案
在Spring Integration 4.0之前,聚合器是完全被动的组件。新消息的到达触发组释放(或不触发)-在咨询释放策略以查看消息所属的组是否可以释放时。因此,我们如何丢弃(或释放)空闲且一段时间内没有新消息到达的组?
收割者按计划运行,可以检测“卡住”的组并根据时间释放它们,而不会收到新消息。
它还可用于删除空组-可以配置聚合器,以使空组保持存在,以便可以将较晚到达的消息丢弃,而不是形成新组。可以按不同的时间表收获空的小组,以部分完成小组。
收割者会使符合配置条件的所有组失效;如果组通过标准,则该组过期;否则,它将在下次运行时被考虑。收割者采取的操作(部分释放,丢弃等)取决于聚合器上的其他设置。
Spring Integration 4.0引入了新的属性(group-timeout
和group-timeout-expression
),允许在超时后自动释放部分组,而无需使用收割器(当有新消息发送给组时,计时器会布防)。在这种情况下,收割者仍可用于使空组失效(删除)。
我希望这可以解释收割机的功能。