返回介绍

Consul 协程客户端

发布于 2021-04-03 03:37:35 字数 5766 浏览 1255 评论 0 收藏 0

Hyperf 提供了一个 Consul 的协程客户端,由于 Consul 本身的 API 比较简单,也支持 HTTP 的请求方法,故该组件仅对 API 进行了一些封装上的简化,基于 hyperf/guzzle 提供的协程 HTTP 客户端支持。

ConsulResponse 类指的是 Hyperf\Consul\ConsulResponse

安装

composer require hyperf/consul

使用

  • 获取对应 Consul 客户端,下面以 KV 客户端为例:
use Hyperf\Consul\KV;
use Hyperf\Guzzle\ClientFactory;
use Hyperf\Utils\ApplicationContext;

$container = ApplicationContext::getContainer();
$clientFactory = $container->get(ClientFactory::class);

$consulServer = 'http://127.0.0.1:8500';
$kv = new KV(function () use ($clientFactory, $consulServer) {
    return $clientFactory->create([
        'base_uri' => $consulServer,
    ]);
});

Consul ACL Token

通过 Header 添加 Token

您可在调用方法时往 Client 传递 Key 为 X-Consul-Token 的 Header 来设置,如下所示:

use Hyperf\Consul\KV;
use Hyperf\Guzzle\ClientFactory;
use Hyperf\Utils\ApplicationContext;

$container = ApplicationContext::getContainer();
$clientFactory = $container->get(ClientFactory::class);

$consulServer = 'http://127.0.0.1:8500';
$kv = new KV(function () use ($clientFactory, $consulServer) {
    return $clientFactory->create([
        'base_uri' => $consulServer,
        'headers' => [
            'X-Consul-Token' => 'your-token'
        ],
    ]);
});

通过 Query 添加 Token

您也可在调用方法时往 $options 参数传递 Key 为 token 的参数来设置,这样 Token 会跟随 Query 一起传递到 Server,如下所示:

$response = $kv->get($namespace, ['token' => 'your-token'])->json();

KV

Hyperf\Consul\KV 实现 Hyperf\Consul\KVInterface 提供支持。

  • get($key, array $options = []): ConsulResponse
  • put($key, $value, array $options = []): ConsulResponse
  • delete($key, array $options = []): ConsulResponse

Agent

Hyperf\Consul\Agent 实现 Hyperf\Consul\AgentInterface 提供支持。

  • checks(): ConsulResponse
  • services(): ConsulResponse
  • members(): ConsulResponse
  • self(): ConsulResponse
  • join($address, array $options = []): ConsulResponse
  • forceLeave($node): ConsulResponse
  • registerCheck($check): ConsulResponse
  • deregisterCheck($checkId): ConsulResponse
  • passCheck($checkId, array $options = []): ConsulResponse
  • warnCheck($checkId, array $options = []): ConsulResponse
  • failCheck($checkId, array $options = []): ConsulResponse
  • registerService($service): ConsulResponse
  • deregisterService($serviceId): ConsulResponse

Catalog

Hyperf\Consul\Catalog 实现 Hyperf\Consul\CatalogInterface 提供支持。

  • register($node): ConsulResponse
  • deregister($node): ConsulResponse
  • datacenters(): ConsulResponse
  • nodes(array $options = []): ConsulResponse
  • node($node, array $options = []): ConsulResponse
  • services(array $options = []): ConsulResponse
  • service($service, array $options = []): ConsulResponse

Health

Hyperf\Consul\Health 实现 Hyperf\Consul\HealthInterface 提供支持。

  • node($node, array $options = []): ConsulResponse
  • checks($service, array $options = []): ConsulResponse
  • service($service, array $options = []): ConsulResponse
  • state($state, array $options = []): ConsulResponse

Session

Hyperf\Consul\Session 实现 Hyperf\Consul\SessionInterface 提供支持。

  • create($body = null, array $options = []): ConsulResponse
  • destroy($sessionId, array $options = []): ConsulResponse
  • info($sessionId, array $options = []): ConsulResponse
  • node($node, array $options = []): ConsulResponse
  • all(array $options = []): ConsulResponse
  • renew($sessionId, array $options = []): ConsulResponse

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文