我们正在开发一个 spring 批处理应用程序,它将在未来处理“大”文件。为了保持低内存签名,我们在这些文件的最小可能块上使用弹簧批处理。处理后,我们希望将结果写回SFTP,这也发生在输入文件的每个块中。
目前的做法如下:
StepExecutionListener.before()SftpOutboundAdapter:我们向with和 empty payload发送一条消息以FileExistsMode.REPLACE创建一个空文件(with .writing)
Reader: 将读取输入文件
Processor:将使用结果增强输入并返回字符串列表
Writer: 将字符串列表发送给SftpOutboundAdapter另一个FileExistsMode.APPEND
StepExecutionListener.after():如果执行成功,我们将重命名文件以删除.writing后缀。
现在我看到有Streaming Inbound Adapters但我找不到Streaming Outbound Adapters。这真的是通过追加解决它的唯一/最佳方法吗?或者是否可以流式传输文件内容?