private async Task <bool> KeepAlive() { try { foreach (var(_, sched) in SchedFactory.schedulers) { if (!sched.IsMaster) { continue; } var discover_name = GetDiscoverName(sched.GetNameKey()); await _redis.HashSetAsync(discover_name, (await SchedService.FromScheduler(sched))?.GetServiceInfo()); await _redis.KeyExpireAsync(discover_name, TimeSpan.FromSeconds(7)); } foreach (var actor in ActorFactory.Actors) { switch (actor.RunningThread.ThreadState) { case ThreadState.Running: case ThreadState.WaitSleepJoin: break; default: continue; } var discover_name = GetDiscoverName(actor.GetNameKey(actor.ActorID.ToString())); await _redis.HashSetAsync(discover_name, ActorService.FromActor(actor)?.GetServiceInfo()); await _redis.KeyExpireAsync(discover_name, TimeSpan.FromSeconds(7)); } return(true); } catch (Exception ex) { _logger.LogError(ex.Message); Console.WriteLine(ex.Message); } return(false); }