背景: 现在有个 dubbo-proxy 服务,通过 Netty + 泛化调用供接口测试,性能压测等。
但是到 PB + Tri 组合之后,泛化调用不生效了,根据 sample 里的示例得将 dubbo-complier 生成的文件引入后,才能用泛化调用。那就太不泛化了。
有没有什么办法像之前那样泛化调用呢,或者有没有其他工具像调用 HTTP 接口一样,动态地调用 Triple 协议呢?
背景: 现在有个 dubbo-proxy 服务,通过 Netty + 泛化调用供接口测试,性能压测等。
但是到 PB + Tri 组合之后,泛化调用不生效了,根据 sample 里的示例得将 dubbo-complier 生成的文件引入后,才能用泛化调用。那就太不泛化了。
有没有什么办法像之前那样泛化调用呢,或者有没有其他工具像调用 HTTP 接口一样,动态地调用 Triple 协议呢?
可以参考一下 grpc-gateway
的实现,目前 triple 已经实现了反射服务,通过 grpc-cli
是可以直接调用的,
引入 protobuf 序列化包,将协议设置为 tri
就行了 reference.setProtocol("tri")
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</dependency>
grpc-gateway 貌似没有实现反射,必须把 proto 加载进来。grpcurl、grpcui 可以用了,那看来可以写个 go 程序集成 grpcurl 来完成 triple 的泛化调用。
NO CAN DO
@liuzhiguo630 @EarthChen 暂时社区没有提供集成反射api调用的工具,可以参考业界实现依赖reflection api的规范定制一个
无效
使用泛化调用的时候一直报Caused by: org.apache.dubbo.rpc.StatusRpcException: UNKNOWN : Cannot invoke "java.lang.reflect.Method.getParameterTypes()" because "method" is null这个异常,大佬们遇到过吗,找不到method是什么原因啊,不用Protobuf的话就没问题
使用的什么版本的 Dubbo