public override Task StartAsync(CancellationToken cancellationToken) { cluster = Akka.Cluster.Cluster.Get(this.actorSystem); cluster.RegisterOnMemberUp(() => { var foorouter = actorSystem.ActorOf(Props.Empty.WithRouter(FromConfig.Instance), "PubActor"); int i = 0; this.actorSystem.Scheduler.Advanced.ScheduleRepeatedly(TimeSpan.Zero, TimeSpan.FromMilliseconds(1000), () => { i++; foorouter.Ask <HelloResponse>(new Hello(i.ToString())) .ContinueWith(tr => { if (tr.IsCompletedSuccessfully) { Console.WriteLine($"Response:{tr.Result?.Message}"); } }); }); }); cluster.RegisterOnMemberUp(() => { }); return(base.StartAsync(cancellationToken)); }
public static async Task StartAsync <TStartup>(CancellationToken cancellationToken) where TStartup : MicroserviceStartup, new() { actorSystem = StartInternal <TStartup>(); cluster = Akka.Cluster.Cluster.Get(actorSystem); cluster.RegisterOnMemberUp(() => { IsClustered = true; }); cluster.RegisterOnMemberRemoved(() => { if (IsClustered) { IsClustered = false; ClusterLeaveEvent.Set(); } }); await Task.Delay(TimeSpan.FromMilliseconds(-1), cancellationToken); if (IsClustered) { cluster.Leave(cluster.SelfAddress); if (!ClusterLeaveEvent.WaitHandle.WaitOne(10.Seconds())) { cluster.Down(cluster.SelfAddress); } } await actorSystem.Terminate(); }
protected override void PreStart() { var self = Self; _cluster.RegisterOnMemberUp(() => { self.Tell(new LivenessStatus(true)); }); _cluster.RegisterOnMemberRemoved(() => { self.Tell(new LivenessStatus(false)); }); }
public override async Task StartAsync(CancellationToken cancellationToken) { cluster = Akka.Cluster.Cluster.Get(ActorSystem); cluster.RegisterOnMemberUp(RegisterOnMemberUp); cluster.RegisterOnMemberRemoved(RegisterOnMemberRemoved); ClusterDiscovery.Get(ActorSystem); await ClusterDiscovery.JoinAsync(ActorSystem); }
public override Task StartAsync(CancellationToken cancellationToken) { cluster = Akka.Cluster.Cluster.Get(this.actorSystem); cluster.RegisterOnMemberUp(() => { ; var foo = actorSystem.ActorOf(FooActor.Props(), "FooActor"); var artileServer = actorSystem.ActorOf(ArticleWorkerActor.For(actorSystem), "artileServer"); }); return(base.StartAsync(cancellationToken)); }
public override Task StartAsync(CancellationToken cancellationToken) { cluster = Akka.Cluster.Cluster.Get(this.actorSystem); cluster.RegisterOnMemberUp(() => { clientserviceref = actorSystem.ActorOf(Props.Create(() => new ClientService(IPAddress.Parse("127.0.0.1"), 9001)), "echo-client"); actorSystem.Scheduler.Advanced.ScheduleRepeatedly(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), () => { clientserviceref.Tell(new SendMessage($"{DateTime.Now.ToString()}--{Guid.NewGuid().ToString("N")}\n")); }); }); cluster.RegisterOnMemberRemoved(() => { clientserviceref.Tell(StopMessage.Instance); }); return(base.StartAsync(cancellationToken)); }
public override Task StartAsync(CancellationToken cancellationToken) { cluster = Akka.Cluster.Cluster.Get(this.actorSystem); cluster.RegisterOnMemberUp(() => { listenerechoserice = actorSystem.ActorOf(Props.Create(() => new EchoService(new IPEndPoint(IPAddress.Any, 9001))), "echo-service"); }); cluster.RegisterOnMemberRemoved(() => { listenerechoserice.Ask(EchoService.StopServer.Instance) .ContinueWith(t => { if (t.IsCompletedSuccessfully) { Console.WriteLine($"服务已停止:{t.Result}"); } }).ConfigureAwait(false); }); return(base.StartAsync(cancellationToken)); }