gRPC快速开始

    请参考运维部署的内容,选择一种方式启动shenyu-admin。比如,通过 启动Apache ShenYu后台管理系统。

    启动成功后,需要在基础配置->插件管理中,把gRPC 插件设置为开启。

    启动网关,如果是通过源码的方式,直接运行shenyu-bootstrap中的ShenyuBootstrapApplication

    引入网关对gRPC的代理插件,在网关的 pom.xml 文件中增加如下依赖:

    下载

    shenyu-examples-grpc 下执行以下命令生成 java 代码:

    1. mvn protobuf:compile //编译消息对象
    2. mvn protobuf:compile-custom //依赖消息对象,生成接口服务

    或者,如果你是通过 IntelliJ IDEA 打开 Apache ShenYu 工程,你可以在 Maven 工具栏中选中 protobuf:compileprotobuf:compile-custom,然后右键 Run Maven Build 一键生成 proto 文件对应的 java代码。

    运行 org.apache.shenyu.examples.grpc.ShenyuTestGrpcApplication 中的 main 方法启动项目。

    成功启动会有如下日志,表示将 gRPC 服务成功注册到 shenyu-admin 中。

    shenyu-examples-grpc项目成功启动之后会自动把加 @ShenyuGrpcClient 注解的接口方法注册到网关。

    打开 插件列表 -> rpc proxy -> grpc 可以看到插件规则配置列表。

    gRPC快速开始 - 图3

    下面使用 postman 模拟 的方式来请求你的 gRPC 服务。 请求参数如下:

    1. {
    2. "data": [
    3. {
    4. "message": "hello grpc"
    5. }
    6. ]
    7. }

    当前是以 json 的格式传递参数,key的名称默认是data,你可以在 GrpcConstants.JSON_DESCRIPTOR_PROTO_FIELD_NAME 中进行重置;value的传入则根据你定义的 proto 文件。

    Apache ShenYu 可以支持 gRPC 的流式调用,下面展示的是 gRPC 四种方法类型的调用。 在流式调用中,你可以通过数组的形式传递多个参数。

    通过postman 模拟 http 请求,发起UNARY调用。

    gRPC快速开始 - 图5

    • CLIENT_STREAMING

    请求参数如下:

    1. {
    2. "data": [
    3. {
    4. "text": "hello grpc"
    5. },
    6. {
    7. "text": "hello grpc"
    8. {
    9. "text": "hello grpc"
    10. }
    11. ]

    通过postman 模拟 http 请求,发起CLIENT_STREAMING调用。

    • SERVER_STREAMING

    请求参数如下:

    通过postman 模拟 http 请求,发起SERVER_STREAMING调用。

    gRPC快速开始 - 图7

    • BIDI_STREAMING

    请求参数如下:

    1. {
    2. "data": [
    3. {
    4. "text": "hello grpc"
    5. },
    6. {
    7. "text": "hello grpc"
    8. },
    9. {
    10. "text": "hello grpc"
    11. }
    12. }