This commit is contained in:
2022-05-31 10:53:33 +08:00
parent cf8208bd12
commit 5f81fd5ff9
+32 -29
View File
@@ -4,6 +4,7 @@ namespace Kiri\Rpc;
use Exception; use Exception;
use Kiri; use Kiri;
use Kiri\Abstracts\Config;
use Kiri\Abstracts\Component; use Kiri\Abstracts\Component;
use Kiri\Annotation\Inject; use Kiri\Annotation\Inject;
use Kiri\Consul\Agent; use Kiri\Consul\Agent;
@@ -12,39 +13,39 @@ use Kiri\Message\Handler\Router;
class RpcManager extends Component class RpcManager extends Component
{ {
/** /**
* @var array * @var array
*/ */
private array $_rpc = []; private array $_rpc = [];
#[Inject(Health::class)] #[Inject(Health::class)]
public Health $health; public Health $health;
/** /**
* @param string $serviceName * @param string $serviceName
* @return void * @return void
* @throws Exception * @throws Exception
*/ */
public function reRegister(string $serviceName): void public function reRegister(string $serviceName): void
{ {
$config = $this->_rpc[$serviceName] ?? []; $config = $this->_rpc[$serviceName] ?? [];
if (empty($config)) { if (empty($config)) {
return; return;
} }
$service = Kiri::getDi()->get(Agent::class); $service = Kiri::getDi()->get(Agent::class);
$info = $service->service->service_health($config['config']['ID']); $info = $service->service->service_health($config['config']['ID']);
if ($info->getStatusCode() == 200) { if ($info->getStatusCode() == 200) {
return; return;
} }
$service->service->register($config['config']); $service->service->register($config['config']);
} }
/** /**
* @throws Exception * @throws Exception
*/ */
@@ -58,8 +59,8 @@ class RpcManager extends Component
$this->logger->error(error_trigger_format($throwable)); $this->logger->error(error_trigger_format($throwable));
} }
} }
/** /**
* @param $serviceName * @param $serviceName
* @return array|null * @return array|null
@@ -76,8 +77,8 @@ class RpcManager extends Component
} }
return array_column($body, 'Service'); return array_column($body, 'Service');
} }
/** /**
* @param string $name * @param string $name
* @param string $class * @param string $class
@@ -87,17 +88,15 @@ class RpcManager extends Component
public function add(string $name, string $class, array $serviceConfig): bool public function add(string $name, string $class, array $serviceConfig): bool
{ {
if (!isset($this->_rpc[$name])) { if (!isset($this->_rpc[$name])) {
$this->_rpc[$name] = ['id' => $serviceConfig['ID'], 'config' => $serviceConfig]; // $this->_rpc[$name] = ['id' => $serviceConfig['ID'], 'config' => $serviceConfig];
} }
Router::addServer('rpc', static function () use ($name, $class) { Router::addServer('rpc', static function () use ($name, $class) {
var_dump($name, $class);
Router::get($name, $class); Router::get($name, $class);
}); });
return true; return true;
} }
/** /**
* @return array * @return array
*/ */
@@ -109,20 +108,24 @@ class RpcManager extends Component
} }
return $array; return $array;
} }
/** /**
* @return void
* @throws Kiri\Exception\ConfigException
*/ */
public function register() public function register(): void
{ {
$agent = Kiri::getDi()->get(Agent::class); $agent = Kiri::getDi()->get(Agent::class);
foreach ($this->_rpc as $list) {
$agent->service->deregister($list['config']['ID']); $list = Config::get("rpc.consul", null, true);
$data = $agent->service->register($list['config']);
if ($data->getStatusCode() != 200) { $agent->service->deregister($list['ID']);
return; $data = $agent->service->register($list);
} if ($data->getStatusCode() != 200) {
$this->logger->error($data->getBody());
} }
} }
} }