我正在使用Spring Integration的文件和ftp功能来实现查看所有文件的流程 写入目录加密,然后ftp到目标目录。消息的有效负载是文件
File Inbound Poller -> Custom Encryption -> Outbound FTP -> Handle Original File
“自定义加密”服务接受文件名,然后返回加密文件的名称。出站FTP服务正常工作,并且在传输成功或失败时,加密文件名将移动到特定文件夹。
新要求是我需要移动原始文件名而不是加密文件名。我不确定实现这个或者我有什么选择的正确方法是什么?
File Inbound Poller -> Custom Encryption -> Outbound FTP
| |
> > -> Handle Original File
我考虑过第一个想法是使用Splitter / Aggregator模式生成第二条消息,该消息在出站ftp阶段后重新受到攻击,但这似乎不正确,因为分割器不会生成两条不同的消息,而是复制原始消息。
答案 0 :(得分:3)
有很多方法可以做到,包括......
让第一个频道<publish-subscribe-channel/>
订阅加密器order="1"
和处理程序order="2"
。只有在其他流正常完成后才会调用该处理程序。
在加密服务之前添加<header-enricher/>
,将原始文件复制到标题<header name="orig" expression="payload"/>
,然后使用下游代码中的标题。
第一个就像你的“拆分器”评论一样 - 有效地允许2个流程处理相同的消息。