2017-09-25 6 views
0

私はキャメルファイルコンシューマーのディレクトリからファイルを読みたいと思いますが、私のルートを処理する必要があります。だから私は敗北の中でスレッドを使用することはできません。 同じエンドポイント(同じディレクトリ)から読み取るために複数のルートを書き込むのは問題ありません(これはソートタイプなど)。同じエンドポイントの複数のコンシューマーは許可されていません

答えて

1

確かにあなたはこれを行うことができますが、今は同じファイルに対して競合することになるので、読み込みロックについて気にしてください。デフォルトでは、Camelはマーカーファイルを使用します。

異なる遅延を使用して、同じ間隔でポーリングしないようにすることもできます。ランダムに並べ替えて、同じファイルを処理する機会を少なくすることができます。

+0

ファイルがroute1によって消費されており、マーカーファイルがあるとします(readLock = changedを使用しているとします)。 route2もこのファイルを読むことができますか?そうでなければ、私はここで競合する消費のどの問題を抱えていますか? – user7916020

+0

Read-locksに関するCamelのドキュメントを読んでください。両方の消費者がファイルがもはや変更されなくなったことを検出して読み取りを開始することができるので、変更されたものは排他的に機能しませんが、マーカーファイルは排他的です。または潜在的なfileLockしかしそれはあなたが使用しているJDKとファイルシステムに依存し、それについてのJDKのdoc/javadocを読んでください。 –

+0

ありがとうございますClaus。 markerFileオプションは、ファイルが完全に書き込まれる前にファイルを読み込むように、ラージファイルの問題を引き起こします。しかし、変更されたファイルもマーカーファイルを使用していますか?だから何が問題なの?名前を変更するオプションはどうですか?それは両方の問題を解決しませんか? – user7916020

関連する問題