Exemple #1
0
        private bool RendezvousNotLeader(IMessage message)
        {
            var shouldHandle = IsRendezvousNotLeader(message);

            if (shouldHandle)
            {
                var payload       = message.GetPayload <RendezvousNotLeaderMessage>();
                var newLeader     = new RendezvousEndpoint(payload.NewLeader.UnicastUri, payload.NewLeader.BroadcastUri);
                var currentLeader = rendezvousCluster.GetCurrentRendezvousServer();
                if (!currentLeader.Equals(newLeader))
                {
                    logger.Info($"New Rendezvous leader: {newLeader.BroadcastUri.AbsoluteUri}. " +
                                $"Disconnecting {currentLeader.BroadcastUri.AbsoluteUri}");

                    if (!rendezvousCluster.SetCurrentRendezvousServer(newLeader))
                    {
                        logger.Error($"New Rendezvous leader {newLeader.BroadcastUri.AbsoluteUri} "
                                     + $"was not found within configured Rendezvous cluster: [{string.Join(",", rendezvousCluster.Nodes.Select(n => n.BroadcastUri.AbsoluteUri))}]");
                    }

                    newRendezvousConfiguration.Set();
                }
            }

            return(shouldHandle);
        }
        private bool RendezvousNotLeader(IMessage message)
        {
            var shouldHandle = IsRendezvousNotLeader(message);

            if (shouldHandle)
            {
                var payload   = message.GetPayload <RendezvousNotLeaderMessage>();
                var newLeader = new RendezvousEndpoint(new Uri(payload.NewLeader.UnicastUri),
                                                       new Uri(payload.NewLeader.BroadcastUri));
                var currentLeader = rendezvousCluster.GetCurrentRendezvousServer();
                if (!currentLeader.Equals(newLeader))
                {
                    logger.Info($"New Rendezvous leader: {newLeader.BroadcastUri.AbsoluteUri}. " +
                                $"Disconnecting {currentLeader.BroadcastUri.AbsoluteUri}");

                    rendezvousCluster.SetCurrentRendezvousServer(newLeader);
                    newRendezvousConfiguration.Set();
                }
            }

            return(shouldHandle);
        }