Commit 0d94f3a3 authored by Liu lu's avatar Liu lu
Browse files

Merge tag 'v2.1.194' of http://git.huaperfect.com/without_auth/meibuyu-micro into 2.1

本地开发 服务注册修改

# Conflicts:
#	src/Listener/RegisterServiceListener.php
parents ffdbcccb 69135a96
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
@@ -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