2つのメンバーノードと1つのクライアントがクラスタに参加しています。残りのメンバーノードがまだ残っていても、ヘーゼルキャストクライアント接続切断イベントが発生する
メンバーAは、ローカルホスト上で5701
コンフィグ設定=新しい設定を()が起動されます。 JoinConfig join = config.getNetworkConfig()。setPort(5701).getJoin(); join.getMulticastConfig()。setEnabled(false); join.getAwsConfig()。setEnabled(false);join.getTcpIpConfig()。addMember( "localhost:5701")。setEnabled(true);join.getTcpIpConfig()。addMember( "localhost:5702")。setEnabled(true); HazelcastInstanceインスタンス= Hazelcast.newHazelcastInstance(config);
会員Bは、ローカルホスト上で5702
コンフィグ設定=新しい設定を()が起動されます。 JoinConfig join = config.getNetworkConfig()。setPort(5702).getJoin(); join.getMulticastConfig()。setEnabled(false); join.getAwsConfig()。setEnabled(false);join.getTcpIpConfig()。addMember( "localhost:5701")。setEnabled(true);join.getTcpIpConfig()。addMember( "localhost:5702")。setEnabled(true); HazelcastInstanceインスタンス= Hazelcast.newHazelcastInstance(config);
クライアントがアドレスに加入:
設定=新しいClientConfig(); config.getNetworkConfig()。addAddress( "localhost:5701"、 "localhost:5702"); インスタンス= HazelcastClient.newHazelcastClient(config);
クライアントは、リスナーを追加します。
instance.getLifecycleServiceのstateChanged()addLifecycleListener(新しいLifecycleListener(){@Override ます。public void(LifecycleEventイベント){System.out.printlnは (「ライフサイクル状態が変更します。 : "+イベント); } });
メンバーAはバウンスされています。
2016年9月9日12時52分19秒PM com.hazelcast.client.connection.nio.ClientConnection WARNING:hz.client_0 [DEV] [3.7]コネクション[
クライアントが切断接続イベントを受け取ります/127.0.0.1:5701]が失われました。理由:java.io.IOException [既存の接続がリモートホストによって強制的に閉じられました] 20 9月20日12:52:19 PM com.hazelcast.core.LifecycleService INFO:hz.client_0 [dev] [3.7] HazelcastClient 3.7(20160817から1302600)は ライフサイクル状態が変化CLIENT_DISCONNECTEDれる:LifecycleEvent [状態= CLIENT_DISCONNECTED] 2016年9月9日12時52分19秒PMのcom.hazelcast.client.spi.impl.ClientMembershipListener INFO:hz.client_0 [DEV]を[3。7]
人[2] { メンバー[ローカルホスト]:5701 - dc7a127d-8302-42f6-9e3e-82406162e245 メンバー[ローカルホスト]:5702 - cb115830-bb71-4af2-A1C1-b11f39e351c8 }
com.hazelcast.core.LifecycleService HazelcastClient 3.7(20160817-1302600)はCLIENT_CONNECTEDです LIFECYCLE状態が変更されました:LifecycleEvent [state = CLIENT_CONNECTED] 2016年9月9日12:52:24 PM com.hazelcast.client.spi.impl.ClientMembershipListener INFO:hz.client_0 [dev] [3.7]
メンバー[1] { 会員[ローカルホスト]:5702 - cb115830-bb71-4af2-A1C1-b11f39e351c8 }
7)今は再びメンバーAバウンス場合、NO切断/イベントに接続されていません受け取った。
8)メンバーBをバウンスすると、再びイベントが発生します。
私の質問は、常に少なくとも1人のメンバーが完全に利用可能であるにもかかわらず、これらのイベントを取得するのはなぜですか?私はこれらのイベントがクラスタ全体がダウンしている場合(両方のメンバー)にのみ期待します。
はい、これらのイベントは正確です。 "オーナー"の接続という概念は、クライアント接続が特定のメンバーに関連付けられるとは思わなかった。私が思った/期待したことは、クラスタが完全に停止するまで(すべてのメンバー)クライアントがイベントを見ないということでした。それ以外の場合は、クライアントが余分なイベントを見ていると思います。ライフサイクル処理コードをクライアントに入れると、これが不必要に呼び出されてしまいます。 – hklf