Commit 69135a96 authored by carlos's avatar carlos
Browse files

本地开发环境服务注册中心修改

parent 8bb48c56
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@

namespace Meibuyu\Micro\Listener;

use Hyperf\Consul\Exception\ServerException;
use Hyperf\ServiceGovernance\Listener\RegisterServiceListener as BaseRegisterServiceListener;

class RegisterServiceListener extends BaseRegisterServiceListener
@@ -45,4 +46,40 @@ class RegisterServiceListener extends BaseRegisterServiceListener
        return $result;
    }

    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