Spring集成 - 文件消息流

时间:2013-02-12 09:15:15

标签: spring-integration

我正在使用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阶段后重新受到攻击,但这似乎不正确,因为分割器不会生成两条不同的消息,而是复制原始消息。

1 个答案:

答案 0 :(得分:3)

有很多方法可以做到,包括......

  1. 让第一个频道<publish-subscribe-channel/>订阅加密器order="1"和处理程序order="2"。只有在其他流正常完成后才会调用该处理程序。

  2. 在加密服务之前添加<header-enricher/>,将原始文件复制到标题<header name="orig" expression="payload"/>,然后使用下游代码中的标题。

  3. 第一个就像你的“拆分器”评论一样 - 有效地允许2个流程处理相同的消息。