コード例 #1
0
 public CoordinatedShutdownLeave()
 {
     Receive <LeaveReq>(req =>
     {
         // MemberRemoved is needed in case it was downed instead
         _cluster.Leave(_cluster.SelfAddress);
         _cluster.Subscribe(Self, typeof(ClusterEvent.MemberLeft), typeof(ClusterEvent.MemberRemoved), typeof(ClusterEvent.MemberDowned));
         var s = Sender;
         Become(() => WaitingLeaveCompleted(s));
     });
 }
コード例 #2
0
        protected override void OnReceive(object message)
        {
            if (message is HelloMessage)
            {
                Cluster.Leave(Cluster.SelfAddress);
                //Context.Stop(Self);
            }

            var up = message as ClusterEvent.MemberUp;

            if (up != null)
            {
                var mem = up;
                Log.Info("Member is Up: {0}", mem.Member);
            }
            else if (message is ClusterEvent.UnreachableMember)
            {
                var unreachable = (ClusterEvent.UnreachableMember)message;
                Log.Info("Member detected as unreachable: {0}", unreachable.Member);
            }
            else if (message is ClusterEvent.MemberRemoved)
            {
                var removed = (ClusterEvent.MemberRemoved)message;
                Log.Info("Member is Removed: {0}", removed.Member);
            }
            else if (message is PoisonPill)
            {
                Context.Stop(Self);
            }
            else if (message is ClusterEvent.IMemberEvent)
            {
                //IGNORE
            }
            else
            {
                Unhandled(message);
            }
        }