依赖的 composer 包
composer require hyperf/json-rpc
composer require hyperf/rpc-server
composer require hyperf/rpc-client
composer require hyperf/service-governance
composer require hyperf/service-governance-consul
composer require hyperf/service-governance-nacos
`
<?phpnamespace App\JsonRpc;use Hyperf\RpcServer\Annotation\RpcService;/*** 注意,如希望通过服务中心来管理服务,需在注解内增加 publishTo属性 值为consul, protocol是协议,默认是jsonrpc-http, 这里演示TCP协议 故使用 jsonrpc* @RpcService(name="FooService ", protocol="jsonrpc", server="jsonrpc-tcp", publishTo="consul")*/
class FooService implements FooServiceInterface
{/*** @inheritDoc*/public function hello(){return 'This is Foo JsonRpc Service.';}
}
配置hyperf服务启动 `/conifg/autoload/server.php` 这里演示TCP协议
。。。['name' => 'jsonrpc-tcp','type' => \Hyperf\Server\Server::SERVER_BASE,'host' => '0.0.0.0','port' => 9503,'sock_type' => SWOOLE_SOCK_TCP,'callbacks' => [\Hyperf\Server\Event::ON_RECEIVE => [\Hyperf\JsonRpc\TcpServer::class, 'onReceive'],],'settings' => ['open_eof_split' => true,'package_eof' => "\r\n",'package_max_length' => 1024 * 1024 * 2,],],
配置注册中心 /conifg/autoload/services.php
return ['enable' => [// 开启服务发现'discovery' => true,// 开启服务注册'register' => true,],// 服务消费者相关配置'consumers' => [],// 服务提供者相关配置'providers' => [],// 服务驱动相关配置'drivers' => ['consul' => [],'nacos' => [],],
];