Exemplo n.º 1
0
        private ServiceRegistrator(Props serviceProps, string serviceName)
        {
            this.serviceName = serviceName;

            service = Context.ActorOf(serviceProps, serviceName);
            Context.Watch(service);

            registry = Context.ActorOf(ClusterSingletonProxy.Props(
                                           "/user/singleton",
                                           new ClusterSingletonProxySettings("service-registry-manager", null, TimeSpan.FromSeconds(3), 8192)
                                           ));

            ReceiveAsync <Terminated>(async m =>
            {
                var e = await registry.Ask(new Unregister(serviceName));

                log.Debug("Unregistered");
                Context.Stop(Self);
            }, m => m.ActorRef.Equals(service));

            ReceiveAsync <string>(async m =>
            {
                var meta = new ServiceMeta(serviceName, Self);

                var e = await registry.Ask(new Register(meta));

                log.Debug("Registered");
            }, s => s == "Register");

            // TODO Configure report health interval
            Context.System.Scheduler.ScheduleTellRepeatedly(TimeSpan.Zero, TimeSpan.FromSeconds(30), Self, "Register", null);
        }
Exemplo n.º 2
0
 public Registered(ServiceMeta serviceMeta)
 {
     ServiceMeta = serviceMeta;
 }