私のspring-boot-integrationアプリは、複数のサーバー(ノード)で実行できますが、それらはすべて共通のディレクトリを読み取ることになっています.今、ファイルをロックするカスタムロッカーを作成して、他のインスタンスができないようにしました同じファイルを処理します。すべてのスプリング構成は 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>