在Spring Integration

时间:2015-07-06 03:17:32

标签: spring-batch spring-integration spring-jms

我在Spring Integration流程的末尾有一个出站通道适配器(在这种情况下是SFTP,但它对JMS或WS来说是相同的)。通过每次有消息传递时使用直接通道,它将同步发送出去。 现在,我需要一直处理消息,直到它们到达出站适配器,但在发送之前等待预定的时间间隔。换句话说,批处理发送操作。 我知道Spring Batch项目可能会为此提供解决方案,但我需要找到一个使用Spring Integration组件的解决方案(在int- *命名空间中) 实现这一目标的典型模式是什么?

1 个答案:

答案 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。对于这些选项,请按照上述文档进行操作。