跳到主要内容

support_new_grpc_client

目录组织说明

所有proto文件会放在protos目录,然后下一级目录用来区分 大的软件,再下一级目录固定为grpc,这个是为了把grpc自动 生成的代码放到一起和手写的代码区分开

add proto file

在protos目录下添加proto文件,比如

因为routing.proto文件里的java_package路径是 com.cloudminds.harix.routing,所以我们参考它创建 protos/harix/grpc/routing目录,然后把routing.proto 放到下面

modify proto file

因为我们的目录组织结构和proto里写的不一致,主要是base路径不一致, 所以需要修改proto文件适应,比如修改

import "common/common.proto";import "harix/grpc/common/common.proto";

generate grpc code

修改generate_pb.py添加proto文件路径到对应列表,比如添加 ./protos/harix/grpc/routing/routing.protogenerate_for_harix 中的列表 请按照字母顺序添加,这样可以方便和文件系统对比哪个加了哪个没加

执行generate_pb.py生成代码

添加client

参照服务提供方示例

比如routing.proto对应服务为harix-routing-service,下载下来后 首先安装依赖包,这样在IDE比如visual studio code中可以代码跳转,参照 项目里的Dockerfile可以知道用go mod tidy安装依赖

具体go环境安装参考go官方文档

学习研究示例比如test\planning_test.go

创建python侧client

新proto文件可能属于一个新应用,也可能属于一个应用的模块

routing.proto为例,服务提供方反馈它是一个独立服务,所以我们 在harixpackage下创建routingclientpackage

具体client规则可参考framework_intro中的client文档

GrpcClient和其它Client的区别只是它会通过grpc生成的stub调用grpc服务,其它方面 并没有区别

创建DynamicFlowClient

比如针对harix.routingclient创建harix.dynamicflow.DynamicFlowRoutingClient, 并且在harix.app.TestDynamicFlow中注册

创建j2脚本验证基本功能

比如创建data/templates/routing_test/simple_planning.json.j2,然后调试验证