2 つの Apache Camel インスタンスが実行されている 1 つの物理サーバーがあります。どちらにも同じ統合アーティファクトが含まれています。タスクは、サーバーのファイル システムのファイルを、cron ジョブによってトリガーされる Apache Camel のファイル コンポーネントと統合することです。ファイル処理は一度だけ行う必要があります。したがって、同じサーバー上の Jdbc リポジトリでべき等パターンを使用します。
一般的に、それはうまくいきます。ただし、場合によっては、両方のインスタンスが実行され、ファイルが読み取られるため、ファイルが 2 回処理されることがあります。JDBC データベースでも、キーは 2 回挿入されます (作成のタイムスタンプもほぼ同じで、ミリ秒の 3 桁目が異なります)。
これは、ファイル コンシューマーの使用方法です。
<from uri="file:{{property.file.directory}}?scheduler=quartz2
&;scheduler.cron={{property.file.cronjob}}?
&idempotent=true
&readLock=idempotent
&idempotentKey=${file:name}-${file:size}-${date:file:yyyy-MM}
&idempotentRepository=#idempotentRepository"/>
ファイルの準備が一度だけであるために私がしなければならないことを誰かが知っていますか??
よろしく、イアン