spring 集成 dsl 缓冲区

spring integration dsl buffer

我有一个要求,我需要 hold/buffer 在频道上接收到的消息并根据消息的数量保留在数据库中,或者超时意味着 1 分钟内没有收到消息。 spring integration

有没有办法实现这个
IntegrationFlows
                .from(Jms.messageDrivenChannelAdapter(connectionFactory)
                    .destination(sourceQueue))
                .transform(someTransform, "transform")
                .handle(someService, "save")
                .get();

有一个 .aggregate() 运算符基于 Aggregator EI 模式实现。

您可以使用 JdbcMessageStore 配置来缓冲消息并将它们存储到数据库中。

您可以通过 ReleaseStrategy(根据到达的每条消息)将它们放在那里直到出现某种情况,或者由于 group timeout.

而释放它们

如果您之后不想将它们全部作为单个聚合消息,您可以考虑使用 SimpleMessageGroupProcessor 它只生成 Collection<Message<?>> 并迭代它们以发送到输出一个一个。

在参考手册中查看有关聚合器的更多信息:https://docs.spring.io/spring-integration/reference/html/messaging-routing-chapter.html#aggregator