0

JGroups ライブラリを使用して相互に通信する一連のクライアントがあり、基本的にクラスター名に接続された通信チャネルを作成します。

communicationChannel = new JChannel(AutoDiscovery.class.getResource("/resource/udp.xml"));
communicationChannel.connect("cluster1");

ここで、最初に接続可能なクラスターを一覧表示し、上記のようにコードにクラスターの名前を固定することなく、どのクラスターに接続するかをユーザーが決定できるようにしたいと考えています。どうやら API には getName() があり、設定されている場合はチャンネルの論理名を返しますが、設定されたクラスターを取得する方法はありません。

org.jgroups.Message.getHeaders() を使用してヘッダーを読み取ると、アクティブなクラスターが生成されますが、何も生成されません。何か助けてください。

4

1 に答える 1

0

現在利用可能なクラスターを見つける方法はありません。すべてのクラスター名とそれに関連する構成を (メモリ内に) 格納する追加の状態を維持することをお勧めします。

あなたができることは、次のことを行うカスタムプロトコルを開発することです (GMS の下に挿入します)。クラスター名 ((String)evt.getArg()) を取得し、セットに追加します - キャッチダウン (Event evt): evt.getType() == Event.DISCONNECT の場合、現在のクラスター名を取得し、設定

これは設定情報を提供しません。JChannel をサブクラス化し、connectXXX() と disconnect() を上書きすると、これも取得できます。

于 2013-04-24T06:12:30.313 に答える