我有一个Spring Integration应用程序,可将传入的文件放到频道上。从那里我希望能够将相同的文件发送到两个不同的处理管道(一个归档到S3,另一个解析内容),然后有一个下游组件可以识别何时成功处理两个,从而删除实际的本地文件。
语义就像我需要一个Splitter / Aggregator,但不是拆分消息我需要复制它。
有没有办法用可用的组件实现这一点,还是需要一些自定义类?
答案 0 :(得分:3)
是的,<publish-subscribe-channel/>
(apply-sequence="true"
)与分割器的工作方式类似 - 但是频道的两个订阅者都将获得SAME File
对象。默认情况下,两个分支将以串行方式执行,但如果要并行处理,则可以引入ExecutorChannel。
如果您希望每个订阅者获得不同的File
对象,您可以添加转换器...
<transformer ... expression="new java.io.File(payload.absolutePath)" />