public static Get ( ExtendedActorSystem system, |
||
system | ExtendedActorSystem | |
settings | ||
return | IMetricsCollector |
public ClusterMetricsCollector(ActorRef publisher) { _publisher = publisher; _cluster = Cluster.Get(Context.System); Collector = MetricsCollector.Get(Context.System.AsInstanceOf <ExtendedActorSystem>(), _cluster.Settings); LatestGossip = MetricsGossip.Empty; Nodes = ImmutableHashSet.Create <Address>(); _metricsTask = new CancellationTokenSource(); Context.System.Scheduler.Schedule(_cluster.Settings.PeriodicTasksInitialDelay.Max(_cluster.Settings.MetricsInterval), _cluster.Settings.MetricsInterval, Self, InternalClusterAction.MetricsTick.Instance, _metricsTask.Token); _gossipTask = new CancellationTokenSource(); Context.System.Scheduler.Schedule(_cluster.Settings.PeriodicTasksInitialDelay.Max(_cluster.Settings.GossipInterval), _cluster.Settings.GossipInterval, Self, InternalClusterAction.GossipTick.Instance, _gossipTask.Token); Receive <InternalClusterAction.GossipTick>(tick => Gossip()); Receive <InternalClusterAction.MetricsTick>(tick => Collect()); Receive <MetricsGossipEnvelope>(envelope => ReceiveGossip(envelope)); Receive <ClusterEvent.CurrentClusterState>(state => ReceiveState(state)); Receive <ClusterEvent.MemberUp>(up => AddMember(up.Member)); Receive <ClusterEvent.MemberRemoved>(removed => RemoveMember(removed.Member)); Receive <ClusterEvent.MemberExited>(exited => RemoveMember(exited.Member)); Receive <ClusterEvent.UnreachableMember>(member => RemoveMember(member.Member)); Receive <ClusterEvent.ReachableMember>(member => { if (member.Member.Status == MemberStatus.Up) { AddMember(member.Member); } }); Receive <ClusterEvent.IMemberEvent>(@event => { }); //not interested in other types of member event }