huangdijia/jet-client

Hyperf jet 客户端

2.2.9 2021-07-29 10:16 UTC

README

Latest Test Latest Stable Version Total Downloads GitHub license

新仓库: https://github.com/friendsofhyperf/jet

安装

Composer

composer require "huangdijia/jet-client:^2.0"

快速开始

使用元数据注册

use Huangdijia\Jet\ServiceManager;
use Huangdijia\Jet\Registry\ConsulRegistry;
use Huangdijia\Jet\Transporter\GuzzleHttpTransporter;

ServiceManager::register('CalculatorService', [
    // register with transporter
    ServiceManager::TRANSPORTER => new GuzzleHttpTransporter('127.0.0.1', 9502),
    // or register with registry
    ServiceManager::REGISTRY => new ConsulRegistry(['uri' => 'http://127.0.0.1:8500']),
]);

通过注册表自动注册服务

use Huangdijia\Jet\ServiceManager;
use Huangdijia\Jet\Registry\ConsulRegistry;

$registry = new ConsulRegistry(['uri' => 'http://127.0.0.1:8500']);
$registry->register('CalculatorService'); // register a service
$registry->register(['CalculatorService', 'CalculatorService2']); // register some services
$registry->register(); // register all service

注册默认注册表

use Huangdijia\Jet\RegistryManager;
use Huangdijia\Jet\Registry\ConsulRegistry;

RegistryManager::register(RegistryManager::DEFAULT, new ConsulRegistry(['uri' => $uri, 'timeout' => 1]));

调用RPC方法

通过ClientFactory调用

use Huangdijia\Jet\ClientFactory;

$client = ClientFactory::create('CalculatorService');
var_dump($client->add(1, 20));

通过自定义客户端调用

use Huangdijia\Jet\Client;
use Huangdijia\Jet\Transporter\GuzzleHttpTransporter;
use Huangdijia\Jet\Registry\ConsulRegistry;

/**
 * @method int add(int $a, int $b)
 */
class CalculatorService extends Client
{
    public function __construct($service = 'CalculatorService', $transporter = null, $packer = null, $dataFormatter = null, $pathGenerator = null, $tries = null)
    {
        // Custom transporter
        $transporter = new GuzzleHttpTransporter('127.0.0.1', 9502);

        // Or get tranporter by registry
        $registry    = new ConsulRegistry(['uri' => 'http://127.0.0.1:8500']);
        $transporter = $registry->getTransporter($service);

        parent::__construct($service, $transporter, $packer, $dataFormatter, $pathGenerator, $tries);
    }
}

$service = new CalculatorService;
var_dump($service->add(3, 10));

通过自定义外观调用

use Huangdijia\Jet\Facade;
use Huangdijia\Jet\ClientFactory;

/**
 * @method static int add(int $a, int $b)
 */
class Calculator extends Facade
{
    protected static function getFacadeAccessor()
    {
        // return ClientFactory::create('CalculatorService');
        return 'CalculatorService';
    }
}

var_dump(Calculator::add(rand(0, 100), rand(0, 100)));