0

複数のノードのクラスターで実行されているスプリング統合アプリケーションがあります。NFS ドライブはすべてのノードにマウントされ、すべてのノードから読み取り可能です。

file:inbound-channel-adapterNFS には、 5 秒のポーリング間隔ですべてのノードによって監視されているフォルダーがあります。

問題は、1) 1 つのノードが他のノードによってピックアップされたファイルをピックアップしてはならないことです。

2) ファイルが 1 つのノードのスレッドによって取得された場合、ポーリング間隔の後に実行される 2 番目のスレッドはそれを取得すべきではありません AcceptOnceFileListFilter

すでに検討したオプションの 1 つ:

1) 一意のファイル名で DB にレコードを作成し、処理を開始する前に他のすべてのノードが同じ DB をチェックします。

NIOLocker をまだ検討する必要がありますが、このシナリオで信頼性と可能なオプションについていくつかの入力が必要です。

4

1 に答える 1

0

ファイルが受け入れられたら、ファイルの名前を変更しようとしましたか? つまり、最初に行うことは、ファイルの名前を file.txt.lck に変更することです。これは、他のノードがフィルター条件に一致するファイルを見つけられなくなることを意味します。

ノードに障害が発生した場合、ファイルを手動で元に戻し、別のノードで処理できます

于 2013-01-03T05:16:13.173 に答える