Java プロセス間でメッセージを送信するために、コンピューターのクラスターで ActiveMQ を使用しています。
クラスタには、すべてのホストからアクセスできる共有 NFS マウントがあります。
次のシナリオで問題が発生しています。
- ホスト A は新しいファイル「/path/to/shared/nfs/xyz」を作成します
- ホスト A がホスト B にメッセージを送信します: "process /path/to/shared/nfs/xyz"
- ホスト B がメッセージを受信し、ファイルを開こうとします。
- ホスト B が失敗するのは、NFS クライアントがまだ A で新しいファイルが作成されたことを認識していないためです (ActiveMQ と NFS プロトコル間の競合状態)。
私の解決策は、NFS が新しいファイルが追加されたことを認識するまで最大 1 分間待機するすべてのメッセージ受信者にループを追加することです。
ただし、このソリューションは汚れているようです。これを解決する良い方法は何ですか?適用されるエンタープライズ統合設計パターンを知っていますか?