ベンダーによって非常に頻繁に更新される外部サーバーに保存されているファイルがあります。私のアプリケーションは、毎分このファイルをポーリングして値を取得します。私がしているのは、ファイルを読むことだけです。
これを行うと、うっかりファイルをロックしてしまい、ベンダーも書き込みできなくなるのではないかと心配しています。これは可能性がありますか?
敬具
私はこの問題に何度か直面しました。Peter Lawrey が言うように、これを行うための移植可能な方法はありません。環境が Unix の場合、これらの同時アクセス条件はオペレーティング システムによって適切に管理されるため、これはまったく問題にはなりません。 . ただし、ウィンドウはこれをまったく処理しません (そうです、それは生産作業にアマチュア OS を使用した結果です、笑)。
そうは言っても、ベンダーが十分に柔軟であれば、これを解決する方法があります。一時ファイルに書き込み、終了したら一時ファイルを最終的な宛先に移動できます。これにより、ベンダーとの間でファイルへの同時アクセスを回避できます。
もう 1 つの方法は、ベンダーの更新のタイミングを正確に (難しい?) 知り、特定の時間枠でファイルを読み取らないようにすることです。たとえば、ベンダーが 1 時間ごとにファイルを更新する場合は、5 時から 5 時過ぎに読み取ることは避けてください。
それが役に立てば幸い。
ボリューム用のWindows シャドウ コピーサービスがあります。これにより、バックアップ コピーを読み取ることができます。
サードパーティのソフトウェアも Java であり、Logger を使用している場合は、調整可能である必要があります。毎分、10 個程度のファイルから次のファイルに書き込みます。
何か問題が発生するまで、(最後の読み取り以降に変更された場合)ファイルを執拗に読み取ろうとします。害がない週末や真夜中に、数百回の読み取りでテストを実行できるかもしれません。
私の答え:おそらく、ファイルが変更されるまで待機し、高速な cooy を作成する、 directoryr の監視サービスで あるローカルの監視プログラムが必要な場合がありその後、コピーを送信できるようにします。