各ノードが (トピックごとに) データを同時にパブリッシュおよびサブスクライブできるパブリッシャー/サブスクライバー分散アプリケーションを作成したいと考えています。簡単にするために、パブリッシャー/サブスクライバーが最初にパブリッシュ/サブスクライブしたいものを中央サーバーに報告するフェーズがあると仮定します。これが完了すると、サーバーはサブスクライバーに、パブリケーションを受信するために接続する必要がある情報を (トピックごとに) 送信します。ノードはパブリッシュおよびサブスクライブできるため、ノード A は別のノード B に接続してサブスクライブできます。ノード B もノード A に接続できます。これは、ノード A がパブリッシュするデータをサブスクライブする必要があるためです。それは循環的な「依存」です。
私が今抱えている問題は、ソケットはすでに双方向の構造であるため、データの発行とデータの受信の両方で、これらの 2 つのノードの通信用にソケットを 1 つだけ保持したいということです。両方のノードに、ポートをリッスンするソケット リスナーがあるとします。両方のノードが同時に相互に接続します。どの接続が受け入れられ、どの接続が破棄されますか? この問題に適したプロトコルはどれですか?
ありがとう!