get(Agent::class); $config = Config::get("rpc.consul", null, true); $info = $service->service->service_health($config['ID']); if ($info->getStatusCode() == 200) { return; } $service->service->register($config); } /** * @throws Exception */ public function tick(): void { try { $this->reRegister(); } catch (\Throwable $throwable) { $this->logger->error(error_trigger_format($throwable)); } } /** * @param $serviceName * @return array|null */ public function getServices($serviceName): ?array { $lists = $this->health->setQuery('passing=true')->service($serviceName); if ($lists->getStatusCode() != 200) { return null; } $body = json_decode($lists->getBody(), true); if (empty($body)) { return null; } return array_column($body, 'Service'); } /** * @param string $name * @param string $class * @return bool */ public function add(string $name, string $class): bool { Router::addServer('rpc', static function () use ($name, $class) { Router::get($name, $class); }); return true; } /** * @return array */ public function doneList(): array { $array = []; foreach ($this->_rpc as $list) { $array[] = $list; } return $array; } /** * @return void * @throws Kiri\Exception\ConfigException */ public function register(): void { $agent = Kiri::getDi()->get(Agent::class); $list = Config::get("rpc.consul", null, true); $agent->service->deregister($list['ID']); $data = $agent->service->register($list); if ($data->getStatusCode() != 200) { $this->logger->error($data->getBody()); } } }