swoft微服务实战五:注册服务

1. 注册服务:

app\Consul\RegisterServiceListener.php:

namespace App\Consul;
use Swoft\Bean\Annotation\Mapping\Inject;
use Swoft\Consul\Agent;
use Swoft\Event\Annotation\Mapping\Listener;
use Swoft\Event\EventHandlerInterface;
use Swoft\Event\EventInterface;
use Swoft\Http\Server\HttpServer;
use Swoft\Log\Helper\CLog;
use Swoft\Server\SwooleEvent;
/**
 * @Listener(event=SwooleEvent::START)
 */
class RegisterServiceListener implements EventHandlerInterface
{
    /**
     * @Inject()
     * @var Agent
     */
    private $agent;
    /**
     * @param EventInterface $event
     */
    public function handle(EventInterface $event): void
    {
        /** @var HttpServer $httpServer */
        $httpServer = $event->getTarget();
        $service = [
            'ID'          => 'order-server-01',    // id一定不能重复
            'Name'        => 'order',              // name希望重复,可以做负载均衡
            'Tags'        => [
                'http'
            ],
            'Address'     => '192.168.33.88',      // 这里指的是需要注册的服务器IP与prot
            'Port'        => 8306,                 // Port of type int,写成string会报错
            'Meta'        => [
                'version' => '1.0'
            ],
            'EnableTagOverride' => false,
            'Weights'           => [
                'Passing' => 10,
                'Warning' => 1
            ]
        ];
        // Register
        $this->agent->registerService($service);
        CLog::info('Swoft http register service success by consul!');
    }
}:. 有了Listener注解,就会执行下面的handle方法
②. 点在没有引入类的代码,按alt + enter,可以自动引入类.. 这里可以单独自己写一个consul文件夹(这里说明的是思路),也可以用默认的Listen文件夹.代码是一样的.

(1). 修改consul默认地址:

如果不修改,默认会注册到本机.
app\bean.php:

return [
    'consul' => [
        'host' => '192.168.33.88',      // 这是consul的ip和port
        'port' => 8500                  // 注意不能是string类型
    ],
    ...
]

(2). 如何查看默认consol地址:

. 点击注册服务的registerService:
   $this->agent->registerService($service);. 跳到vendor\swoft\consul\src\Agent.php的registerService方法.
   public function registerService(array $service): Response
   {
      $params = [
         'body' => $service,
      ];
      return $this->consul->put('/v1/agent/service/register', $params);
   }
   /**
     * @Inject()
     * @var Consul    // 点击这里跳到下面
     */
   private $consul;. 跳到vendor\swoft\consul\src\Consul.php:
   private $host = '127.0.0.1';      // 如果不在bean.php中重写host、port,就会默认是本机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值