我在Spring Integration流程的末尾有一个出站通道适配器(在这种情况下是SFTP,但它对JMS或WS来说是相同的)。通过每次有消息传递时使用直接通道,它将同步发送出去。 现在,我需要一直处理消息,直到它们到达出站适配器,但在发送之前等待预定的时间间隔。换句话说,批处理发送操作。 我知道Spring Batch项目可能会为此提供解决方案,但我需要找到一个使用Spring Integration组件的解决方案(在int- *命名空间中) 实现这一目标的典型模式是什么?
答案 0 :(得分:1)
Aggregator
pattern适合您。
在您的特定情况下,我将其称为window
,因为您与群组邮件没有任何特定关联,但只需要在调用时构建batch
它
因此,我认为您的Aggregator配置可能如下所示:
<int:aggregator input-channel="input" output-channel="output"
correlation-strategy-expression="1"
release-strategy-expression="size() == 10"
expire-groups-upon-completion="true"
send-partial-result-on-expiry="true"/>
correlation-strategy-expression="1"
表示group
任何传入消息release-strategy-expression="size() == 10"
允许按10条消息形成和发布批次expire-groups-upon-completion="true"
对聚合器说,从商店中删除发布组。这允许为同一correlationKey
(在我们的情况下为1
)send-partial-result-on-expiry="true"
指定当我们没有足够的消息来构建整批时,必须在过期功能上执行normal
发布操作(发送到output-channel
)(大小)我们的情况是10
。对于这些选项,请按照上述文档进行操作。