我正在使用Spring Integration开发文件解析系统。
下一个场景是: Poller从目录中获取文件,然后我们应用一些转换,解析等...最后我们需要将数据存储到两个源(mongoDB和File System)并删除原始文件。
我正在使用Scatter-Gather模式并行执行存储操作。
问题:如何自动发布群组?并将聚合结果路由到最终处理程序?
这是一个代码示例:
@Bean
public IntegrationFlow processDomainFileFlow() {
return IntegrationFlows
.from("receiverChannel")
.scatterGather(scatterer -> scatterer
.recipientFlow(m -> true, subFlow -> subFlow.handle(new DataToMongoHandler()))
.recipientFlow(m -> true, subFlow -> subFlow.handle(new DataToFileStorageHandler())),
gatherer -> gatherer
.releaseStrategy(group -> group.size() == 2),
scatterGatherSpec -> scatterGatherSpec
.gatherChannel(MessageChannels.direct("gateway").get()))
.get();
}
这是一个最终的处理程序:
@Bean
public IntegrationFlow gatewayFlow(){
return IntegrationFlows.from("gateway")
.handle(new DeleteOriginalFileHandler())
.get();
}
答案 0 :(得分:0)
添加aggregator()
,将其配置为在大小为2时释放该组;更改子流以在成功后向聚合器发送消息。