1

我正在使用 Spring Integration 的文件和 ftp 功能来实现一个流程,该流程将所有文件写入加密的目录,然后通过 ftp'​​ed 到目标目录。消息的有效负载是一个文件

File Inbound Poller -> Custom Encryption -> Outbound FTP -> Handle Original File

“自定义加密”服务接收文件名,然后返回加密文件的名称。出站 FTP 服务正常工作,传输成功或失败时,加密文件名将移动到特定文件夹。

新要求是我需要移动原始文件名而不是加密文件名。我不确定实现这个的正确方法是什么,或者我有什么选择?

File Inbound Poller -> Custom Encryption -> Outbound FTP
                    |                               |
                    >                               >     -> Handle Original File 

我考虑的第一个想法是使用拆分器/聚合器模式生成第二条消息,该消息在出站 ftp 阶段后重新聚合,但这似乎不正确,因为拆分器不会生成两条不同的消息,而是复制原始消息。

4

1 回答 1

3

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

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

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

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

于 2013-02-12T14:19:07.637 回答