[apache/dubbo]使用 protobuf 和 triple 协议的接口如何泛化调用?

2024-06-24 628 views
9

背景: 现在有个 dubbo-proxy 服务,通过 Netty + 泛化调用供接口测试,性能压测等。

但是到 PB + Tri 组合之后,泛化调用不生效了,根据 sample 里的示例得将 dubbo-complier 生成的文件引入后,才能用泛化调用。那就太不泛化了。

有没有什么办法像之前那样泛化调用呢,或者有没有其他工具像调用 HTTP 接口一样,动态地调用 Triple 协议呢?

回答

2

引入 protobuf 序列化包,将协议设置为 tri 就行了 reference.setProtocol("tri")

    <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
        </dependency>
3

grpc-gateway 貌似没有实现反射,必须把 proto 加载进来。grpcurl、grpcui 可以用了,那看来可以写个 go 程序集成 grpcurl 来完成 triple 的泛化调用。

4

NO CAN DO

0

@liuzhiguo630 @EarthChen 暂时社区没有提供集成反射api调用的工具,可以参考业界实现依赖reflection api的规范定制一个

6

无效

image
6

使用泛化调用的时候一直报Caused by: org.apache.dubbo.rpc.StatusRpcException: UNKNOWN : Cannot invoke "java.lang.reflect.Method.getParameterTypes()" because "method" is null这个异常,大佬们遇到过吗,找不到method是什么原因啊,不用Protobuf的话就没问题

9

使用的什么版本的 Dubbo