私たちは、キュレーターを使用して接続を確立し、学芸員のセッションは、再帰的にノードと削除ノードを作成するためのより良いサポートを再試行メカニズムを維持しています。
RetryPolicy = RetryPolicy 新しい新しい ExponentialBackoffRetry(1,000 ,. 3 ); CuratorFrameworkクライアント = CuratorFrameworkFactory.builder() .connectString( "10.10.210.123:2181" ) .sessionTimeoutMs( 50000000 ) .connectionTimeoutMs( 50000000 ) .retryPolicy(retryPolicy) .build(); client.start(); // あなたは学芸員のZKを使用して動作することができますを開始した後、後に解放するまで使用closeメソッドを呼び出すことを忘れないでください。
一般的なコードは、第一のメッセージを通信するルートノードを作成した後に存在するか否かを判断することができます。
STAT S = client.checkExists()forPath( "/ msg_node_list"。 )。 もし(S == NULL ){ 文字列O = client.create()withMode(CreateMode.PERSISTENT).forPath( "/ msg_node_list"。 )。 }
当社のサービスのそれぞれについて、ネッティー、そのサービスIDに応じて登録msg_node_listへの一時的なノード:
client.create()withMode(CreateMode.EPHEMERAL).forPath( "/ msg_node_list / B")。
クライアント配布特定ネッティーリンクサーバーを担当する当社の監視センターでは、あなたはすべてのポーリング一時的な子ノードの状態を監視する必要がある、と時計の異常なオフライン・ノードを聞くことによって、Redisのへのサービスのリストを更新するので、クライアントはそのこれは、メッセージングサービスを提供します。
。リスト<文字列> = client.getChildrenリスト()forPath(「/ msg_node_list」); // リストの各暫定子ノードを介して、次のコードを呼び出す、一時的な撤退でノード名のパラメータリスト: client.getChildren( ).usingWatcher(W).forPath( " / msg_node_list / B")。
ウォッチャーW = 新しいウォッチャ(){ @Override 公共 ボイドプロセス(WatchedEvent watchedEvent){ Event.EventTypeタイプ = watchedEvent.getType()。 もし(type.equals(Event.EventType.NodeDeleted)){ System.out.printlnは(watchedEvent.getPath())。 } } }。
ネッティーサービスクライアント接続異常オフラインであれば、訪問は、サーバーの監視可能な網状のアドレスのために。
リスト維持にRedisのRedisのセットに格納された各網状サーバー対応するクライアントIDを、。
サーバーを監視することは、内部ネッティーサーバーのアドレスを保持するコレクションを維持し、より少ないから接続されたクライアントの数がより整列し、各クライアントの最小サービスネッティーに割り当てられた優先開催されました。
ネッティーサービスが利用できない場合、およびリストは速やかに削除されません。