Loading src/Listener/RegisterServiceListener.php +37 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ namespace Meibuyu\Micro\Listener; use Hyperf\Consul\Exception\ServerException; use Hyperf\ServiceGovernance\Listener\RegisterServiceListener as BaseRegisterServiceListener; class RegisterServiceListener extends BaseRegisterServiceListener Loading Loading @@ -63,4 +64,40 @@ class RegisterServiceListener extends BaseRegisterServiceListener } throw new \RuntimeException('Can not get the internal IP.'); } public function process(object $event) { $this->registeredServices = []; $continue = true; $env = $this->config->get('app_env'); while ($continue) { try { $services = $this->serviceManager->all(); $servers = $this->getServers(); foreach ($services as $serviceName => $serviceProtocols) { foreach ($serviceProtocols as $paths) { foreach ($paths as $path => $service) { if (! isset($service['publishTo'], $service['server']) || $env == 'dev-mf') { continue; } [$address, $port] = $servers[$service['server']]; switch ($service['publishTo']) { case 'consul': $this->publishToConsul($address, (int) $port, $service, $serviceName, $path); break; } } } } $continue = false; } catch (ServerException $throwable) { if (strpos($throwable->getMessage(), 'Connection failed') !== false) { $this->logger->warning('Cannot register service, connection of service center failed, re-register after 10 seconds.'); sleep(10); } else { throw $throwable; } } } } } No newline at end of file Loading
src/Listener/RegisterServiceListener.php +37 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ namespace Meibuyu\Micro\Listener; use Hyperf\Consul\Exception\ServerException; use Hyperf\ServiceGovernance\Listener\RegisterServiceListener as BaseRegisterServiceListener; class RegisterServiceListener extends BaseRegisterServiceListener Loading Loading @@ -63,4 +64,40 @@ class RegisterServiceListener extends BaseRegisterServiceListener } throw new \RuntimeException('Can not get the internal IP.'); } public function process(object $event) { $this->registeredServices = []; $continue = true; $env = $this->config->get('app_env'); while ($continue) { try { $services = $this->serviceManager->all(); $servers = $this->getServers(); foreach ($services as $serviceName => $serviceProtocols) { foreach ($serviceProtocols as $paths) { foreach ($paths as $path => $service) { if (! isset($service['publishTo'], $service['server']) || $env == 'dev-mf') { continue; } [$address, $port] = $servers[$service['server']]; switch ($service['publishTo']) { case 'consul': $this->publishToConsul($address, (int) $port, $service, $serviceName, $path); break; } } } } $continue = false; } catch (ServerException $throwable) { if (strpos($throwable->getMessage(), 'Connection failed') !== false) { $this->logger->warning('Cannot register service, connection of service center failed, re-register after 10 seconds.'); sleep(10); } else { throw $throwable; } } } } } No newline at end of file