spring集成dsl缓冲区



我有一个要求,我需要保存/缓冲在通道上接收到的消息,并根据消息数或超时表示1分钟内没有收到消息而在数据库中保持。有没有办法在春季集成中实现这一点

IntegrationFlows
.from(Jms.messageDrivenChannelAdapter(connectionFactory)
.destination(sourceQueue))
.transform(someTransform, "transform")
.handle(someService, "save")
.get();

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

您可以使用JdbcMessageStore配置那个一个来缓冲消息并将它们存储到DB中。

您可以通过ReleaseStrategy(根据收到的每条消息(将它们保存在那里,直到出现某种情况,或者通过group timeout释放它们。

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

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

相关内容

  • 没有找到相关文章

最新更新