gRPC----gRPC(springboot)传输简单数据

概述

项目结构和实现步骤

  • 整个demo分为三个部分:protobuf定义的接口部分服务端客户端

demo整体结构

  • 实现步骤
    1. 使用protobuf定义接口,即相对应的proto文件
    2. 使用build方法生成对应的程序代码
    3. 在服务端重写服务方法,用来监听客户端发送的请求建立连接并返回数据
    4. 在客户端构造请求方法,向服务端发送请求并获得返回数据

demo实现

  • 准备工作
  1. 首先可以建立一个基本的Springboot项目
    在这里插入图片描述
  2. 在项目里面添加对应的三个模块
    在这里插入图片描述
    在这里插入图片描述

接口文件部分

  1. 先在demo-proto接口模块中添加对应的依赖和插件
buildscript {
    repositories {
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.6'
    }
}

plugins {
    id 'java'
    id 'idea'
}
apply plugin:"com.google.protobuf"

group 'com.example.demo-grpc'
version '0.0.1-SNAPSHOT'

sourceCompatibility = 1.8

repositories { 
    mavenCentral()
    maven {url "https://plugins.gradle.org/m2/"}
}

dependencies {
    compile "com.google.protobuf:protobuf-java:3.6.1"
    compile "io.grpc:grpc-netty:1.12.1"
    compile "io.grpc:grpc-protobuf:1.12.1"
    compile "io.grpc:grpc-stub:1.12.1"
}

protobuf {
    protoc {
        // The artifact spec for the Protobuf Compiler
        artifact = 'com.google.protobuf:protoc:3.6.1'
    }
    plugins {
        grpc {
            artifact = 'io.grpc:protoc-gen-grpc-java:1.12.1'
        }
    }
    generateProtoTasks {
        ofSourceSet('main')*.plugins {
            
            grpc { }
        }
    }
}

  1. src目录中添加proto文件夹,添加demo.proto文件
    定义简单的包名以及传输信息的格式,名称
syntax = "proto3";

option java_multiple_files = true;
option java_package = "com.demo.grpc";

option java_outer_classname = "DemoProto";

//请求消息
message CommonRequest {
    string header = 3;
    string body = 4;
}
//响应消息
message CommonResponse {
    int32 code = 1;
    string note = 2;
}

service Simple{
    rpc Hello(CommonRequest) returns(CommonResponse){}
}
  1. 生成对应的程序代码,双击gradle窗口的build方法,即可自动完成
    在这里插入图片描述

服务端

  1. 在demo-server模块中添加对应的依赖并且导入demo-proto模块,build.gradle代码如下
plugins {
    id 'java'
    id 'org.springframework.boot'
}
apply plugin: 'io.spring.dependency-management'
group 'com.example.demo-grpc'
version '0.0.1-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile project(':demo-proto')
    compile 'net.devh:grpc-server-spring-boot-starter:1.4.0.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
  1. 添加服务端方法,并重写定义的方法,添加ServerService类重写hello方法
    获取请求发来的参数信息,可以从proto定义的消息格式中知道:有header和body两种,所以在设置的返回信息中我选择把请求的信息再返回给客户端
    在这里插入图片描述
  2. 设置服务端启动端口和grpc端口
    在application.yml中设置为
server:
  port: 8088
grpc:
  server:
    port: 9876

客户端

  1. 在demo-client模块中添加对应的依赖并且导入demo-proto模块,build.gradle代码如下

plugins {
    id 'java'
    id 'org.springframework.boot'
}
apply plugin: 'io.spring.dependency-management'

group 'com.example.demo-grpc'
version '0.0.1-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile project(':demo-proto')
    compile 'net.devh:grpc-client-spring-boot-starter:1.4.0.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-web'

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

  1. 在客户端实现发送请求的方法
    在这里插入图片描述
  2. 在客户端添加控制器类,方便调用请求方法
    在这里插入图片描述
    4.设置客户端启动端口,以及grpc服务端端口
    在application.yml中设置
grpc:
  client:
    local-ser:
      host: 127.0.0.1
      port: 9876
server:
  port: 8087

运行结果

最后程序结果如图:
运行结果图

注:demo就不放在git上了,有需要可以联系。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值