Spring batch 在Spring集成中批处理出站适配器上的发送操作

Spring batch 在Spring集成中批处理出站适配器上的发送操作,spring-batch,spring-integration,spring-jms,Spring Batch,Spring Integration,Spring Jms,我在Spring集成流的末尾有一个出站通道适配器(在本例中是SFTP,但对于JMS或WS也是如此)。通过在每次有消息流时使用直接通道,消息将同步发送。 现在,我需要一路处理消息,直到它们到达出站适配器,但在发送消息之前要等待预定的间隔。换句话说,批处理发送操作。 我知道Spring批处理项目可能会为此提供解决方案,但我需要找到一个包含Spring集成组件的解决方案(在int-*名称空间中) 实现这一点的典型模式是什么?聚合器是为您准备的 在您的特定情况下,我会这样称呼它,因为您与组消息没有任何特

我在Spring集成流的末尾有一个出站通道适配器(在本例中是SFTP,但对于JMS或WS也是如此)。通过在每次有消息流时使用直接通道,消息将同步发送。 现在,我需要一路处理消息,直到它们到达出站适配器,但在发送消息之前要等待预定的间隔。换句话说,批处理发送操作。 我知道Spring批处理项目可能会为此提供解决方案,但我需要找到一个包含Spring集成组件的解决方案(在int-*名称空间中)
实现这一点的典型模式是什么?

聚合器是为您准备的

在您的特定情况下,我会这样称呼它,因为您与组消息没有任何特定的相关性,只需要构建一个您所称的
batch

因此,我认为您的聚合器配置可能如下所示:

<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”
    表示
    任何传入消息
  • release strategy expression=“size()==10”
    允许通过10条消息形成和发布批
  • expire groups on completion=“true”
    要求聚合器从it存储中删除发布组。允许为相同的
    correlationKey
    创建一个新组(在本例中为
    1
  • send partial result on expire=“true”
    指定当我们没有足够的消息来构建整个批时,必须在expire函数上执行
    正常
    释放操作(发送到
    输出通道
    )。对于这些选项,请遵循上述文档