Spring-XD 中的非串联文件接收器?

Non-concatenating file sink in Spring-XD?

在 Spring-XD 中,file source 检测输入目录中的新文件并通过管道传输其内容.

是否有类似的 sink 在输出目录中创建单独的结果文件(例如使用原始文件名)而不是将所有结果附加到一个文件,http://docs.spring.io/spring-xd/docs/current/reference/html/#file-sink: "The file sink uses the stream name as the default name for the file it creates, and places the file in the /tmp/xd/output/ directory."?

向下滚动到您引用的文档中的选项。

使用--nameExpression=....

如果您正在使用mode=contents;原始文件名可在 file_name header:

--nameExpression=headers[file_name]

mode=lines 目前不捕获文件名(将在下一个版本中修复)。

如果您使用的是mode=ref,您需要设置一个header。

最小工作示例

在Spring-XD

stream create --name test --definition "file --mode=contents | b:file --binary=true --dirExpression='''/tmp/out''' --nameExpression=headers[file_name]" --deploy

echo "1111"  >  /tmp/xd/input/test/file1.txt
echo "2222"  >  /tmp/xd/input/test/file2.txt

结果

ll  /tmp/out/
>  
>  -rw-rw-r--  1 rmv  rmv      5 Jul  7 10:19 file1.txt
>  -rw-rw-r--  1 rmv  rmv      5 Jul  7 10:19 file2.txt