Spring Integration中是否有一些组件可用于在指定的时间范围内过滤掉重复项?
我正在寻找像Debounce from ReactiveX
这样的东西在我的项目中,我发送一个包含UUID的Payload,如果在10秒内通过队列发送,我希望过滤掉具有相同UUID的多个Payload - 然后我想只让最后一个通过只要在接下来的10秒内没有其他具有相同UUID的Payload。
答案 0 :(得分:4)
感谢@Apokralipsa我能够通过添加以下聚合器来实现这一点:
<int:aggregator
input-channel="enrichedChannel"
output-channel="aggregatedChannel"
group-timeout-expression="size() ge 1 ? 10000 : -1"
send-partial-result-on-expiry="true"
expire-groups-upon-timeout="true"
correlation-strategy-expression="payload.id"
release-strategy-expression="false" />
答案 1 :(得分:3)
您可以使用aggregator来实现此目的。您需要设置的是
expire-groups-upon-completion
至false
,以便在完成并发送后不会删除该组group-timeout
例如,持续10秒expire-groups-upon-timeout
保留为true
(默认情况下是这样)参考文献:
(expire-groups-upon-completion)设置为true(默认为false)时,将从邮件存储中删除已完成的组,从而允许具有相同关联的后续邮件组成新组。默认行为是将与已完成组具有相同相关性的消息发送到丢弃信道。