Another jet client for Hyperf
Fund package maintenance!
huangdijia
hdj.me/sponsors
Requires
- php: >=8.0
- guzzlehttp/guzzle: ^6.0|^7.0
- markrogoyski/math-php: ^2.0
Requires (Dev)
- grpc/grpc: ~1.30.0
- huangdijia/php-coding-standard: ^1.2
- mockery/mockery: ^1.0
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^7.0|^8.0|^9.0|^10.0
Suggests
- swoole: >=4.6.0
- 4.x-dev
- v4.0.0-beta.1
- 3.x-dev
- v3.1.1
- v3.1.0
- v3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.x-dev
- v2.2.1
- 2.2.0
- 2.1.10
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.10
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
This package is auto-updated.
Last update: 2024-03-27 00:57:22 UTC
README
Another jet client for Hyperf
Installation
Composer
composer require "friendsofhyperf/jet:^3.0"
Quickstart
Register with metadata
use FriendsOfHyperf\Jet\Metadata; use FriendsOfHyperf\Jet\ServiceManager; use FriendsOfHyperf\Jet\Registry\ConsulRegistry; use FriendsOfHyperf\Jet\Transporter\GuzzleHttpTransporter; $metadata = new Metadata('CalculatorService'); $metadata->setTransporter(new GuzzleHttpTransporter('127.0.0.1', 9502)); // or $metadata->setRegistry(new ConsulRegistry(['uri' => 'http://127.0.0.1:8500'])); ServiceManager::register('CalculatorService', $metadata);
Register default registry
use FriendsOfHyperf\Jet\RegistryManager; use FriendsOfHyperf\Jet\Registry\ConsulRegistry; RegistryManager::register(RegistryManager::DEFAULT, new ConsulRegistry(['uri' => $uri, 'timeout' => 1]));
In Laravel project, Add to
boot()
inApp/Providers/AppServiceProvider.php
Call RPC method
Call by ClientFactory
use FriendsOfHyperf\Jet\ClientFactory; $client = ClientFactory::create('CalculatorService'); var_dump($client->add(1, 20));
Call by ClientFactory Using Grpc
use FriendsOfHyperf\Jet\ClientFactory; return ClientFactory::create(function() { return (new Metadata('CalculatorService')) ->setPacker(new GrpcPacker()) ->setPathGenerator(new GrpcPathGenerator()) // If use consul next config is necessary ->setRegistry(RegistryManager::get(RegistryManager::DEFAULT)) ->setTransporterConfig([ 'path' => 'calculator.CalCulator', ]) ->setProtocol('grpc') ->setTimeout(10) // If not use consul,directly use GrpcTransporter ->setTransporter(new GrpcTransporter('127.0.0.1', 9502, [ 'path' => 'calculator.CalCulator', ])); });
Call by custom client
use FriendsOfHyperf\Jet\Client; use FriendsOfHyperf\Jet\Transporter\GuzzleHttpTransporter; use FriendsOfHyperf\Jet\Registry\ConsulRegistry; /** * @method int add(int $a, int $b) */ class CalculatorService extends Client { public function __construct($service = 'CalculatorService') { $metadata = (new Metadata($service)) // Custom transporter ->setTransporter(new GuzzleHttpTransporter('127.0.0.1', 9502)) // Custom registry ->setRegistry(new ConsulRegistry(['uri' => 'http://127.0.0.1:8500'])); parent::__construct($metadata); } } $service = new CalculatorService; var_dump($service->add(3, 10));
Call by custom facade
use FriendsOfHyperf\Jet\Facade; use FriendsOfHyperf\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)));
Coroutine support in Hyperf
// config/autoload/annotations.php <?php declare(strict_types=1); return [ 'scan' => [ // ... 'class_map' => [ GuzzleHttp\Client::class => BASE_PATH . '/vendor/friendsofhyperf/jet/classmap/GuzzleHttp/Client.php', ], ], ];