reatang/grpc-php-abstract 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

reatang/grpc-php-abstract

最新稳定版本:0.4.0

Composer 安装命令:

composer require reatang/grpc-php-abstract

包简介

php兼容 grpc原生客户端 和 grpc-gateway 调用

README 文档

README

abstract grpc and grpc-gateway

  • 提供grpc原生客户端 和 grcp-gateway调用的抽象层
  • 添加解析 protobuf Any 参数的工具 UtilAny
  • 一元请求重试中间件
  • 支持配置化的默认调用行为
  • 支持OpenTelemetry链路追踪(grpc、gateway都已支持)
  • 开发自动生成grpc原生客户端抽象层 protoc-gen-php-abs-grpc
  • 开发自动生成grpc-gateway抽象层: --php-abs-grpc_opt=genType=gateway 则生成gateway抽象层

安装

> composer require reatang/grpc-php-abstract

使用

本教程假定您已经知道 protobufgrpc 的基础知识,并预先学习了 protoc-gen-php-abs-grpc 生成器的功能。

<?php

use \Path\To\ServerName\SomeServerAbsRpc;

// ... 

// 初始化php-abs-grpc生成的客户端
$client = new SomeServerAbsRpc("127.0.0.1:8080");

// 调用方法
$response = $client->ping(new \Path\To\ServerName\PB\PingRequest(['ping' => 'hello world']));

echo $response->getPong() . PHP_EOL;

业务错误信息传递方案

在golang的grpc业务处理中,一般返回值是两个:

return response, error

这第二个error参数如果不是标准的grpc错误码,则对应这grpc的status则是:code:2, details: error的内容。 那么我就可以利用这个error的内容做一个简单的数据格式用来携带错误。 我的details内容格式则是:

!int:string
!错误码:错误信息

如:
!100:您的操作有误

按照这种格式传输的details,则会自动抛出 GrpcBusinessException 异常。

注意

  • 2023-07-06:protobuf 3.23 是支持 php7.4的最后一个版本,使用php7.4的同学不要再用更新的版本了,相关新闻

文档列表

鸣谢

jetbrains

感谢jetbrains 对开源项目提供的支持

统计信息

  • 总下载量: 3
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-07-27