/// <summary> /// Обработчик старта ноды /// </summary> public void Started() { _status.AddCallback("test", action => { if (action.PayLoad == null) { _status.Next.Send(action.Message); } else { _status.Next.Send(action.PayLoad); } }); var apiService = _serviceProvider.GetRequiredService <IApiService>(); // Отправляем информацию о старте и количестве акторов в ноде try { var url = string.Format("{0}/api/worker/started", _nodeSettings.ClusterUrl); apiService.PutOrPostRequest <NodeStarted, string>(url, new NodeStarted() { ActorsCount = _nodeSettings.ActorsCount, Host = _nodeSettings.NodeUrl }); } catch (Exception ex) { SendError(ex.ToString()); _logger.Error(ex); } var cancellationTokenSource = new CancellationTokenSource(); // Добавил простой heartbeat чтобы отслеживать на кластере существование нод TaskRepeater.Interval(TimeSpan.FromSeconds(_heartbeatInterval), () => { try { apiService.GetRequest <string>(string.Format("{0}/api/worker/ready/{1}", _nodeSettings.ClusterUrl, _nodeSettings.NodeUrl)); } catch (Exception ex) { SendError(ex.ToString()); _logger.Error(ex); } }, cancellationTokenSource.Token, true); }