我的 spring-boot-integration 应用程序可以在多个服务器(节点)上运行,但它们都应该读取一个公共目录。现在,我编写了一个自定义储物柜,它可以锁定文件,以便任何其他实例都无法处理相同的文件。所有 spring 配置都在 xml 中完成。
应用程序获取锁但无法读取锁定文件的内容。
java.io.IOException: The process cannot access the file because another process has locked a portion of the file
正如表单中所建议的,我们只能通过 ByteBuffer 访问锁定的文件内容。
因此尝试使用 file-to-bytes-transformer 将文件转换为字节,并作为输入传递给出站网关。但是实例没有开始。
有什么建议吗?
<file:file-to-bytes-transformer input-channel="filesOut" output-channel="filesOutChain"/>
<integration:chain id="filesOutChain" input-channel="filesOutChain">
<file:outbound-gateway id="fileMover"
auto-create-directory="true"
directory-expression="headers.TARGET_PATH"
mode="REPLACE">
<file:request-handler-advice-chain>
<ref bean="retryAdvice" />
</file:request-handler-advice-chain>
</file:outbound-gateway>
<integration:gateway request-channel="filesChainChannel" error-channel="errorChannel"/>
</integration:chain>