学芸員のリスニングは、「インフォメーション・センター」を達成するために、一時的なノードをZK

私たちは、キュレーターを使用して接続を確立し、学芸員のセッションは、再帰的にノードと削除ノードを作成するためのより良いサポートを再試行メカニズムを維持しています。

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を、

サーバーを監視することは、内部ネッティーサーバーのアドレスを保持するコレクションを維持し、より少ないから接続されたクライアントの数がより整列し、各クライアントの最小サービスネッティーに割り当てられた優先開催されました

ネッティーサービスが利用できない場合、およびリストは速やかに削除されません。

おすすめ

転載: www.cnblogs.com/zzq-include/p/12124898.html