原文格式清晰,转载自:https://blog.csdn.net/cclllday/article/details/85694459

grpc是谷歌发布的rpc框架,开源的远程调用框架,多语言支持(Python,Java,C、C++、Node.js、Ruby、Objective-C),目前已有Java版本,grpc-java,Go版本,grpc-go以及C版本。

win下搭建grpc-java(idea maven)

一、pom.xml build标签做如下配置

1、引入构建工具


<build><extensions><extension><groupId>kr.motd.maven</groupId><artifactId>os-maven-plugin</artifactId><version>1.4.1.Final</version></extension></extensions><plugins><plugin><groupId>org.xolstice.maven.plugins</groupId><artifactId>protobuf-maven-plugin</artifactId><version>0.5.0</version><configuration><protocArtifact>com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier}</protocArtifact><pluginId>grpc-java</pluginId><pluginArtifact>io.grpc:protoc-gen-grpc-java:1.5.0:exe:${os.detected.classifier}</pluginArtifact><!--*.proto文件目录--><protoSourceRoot>src/main/proto</protoSourceRoot></configuration><executions><execution><goals><goal>compile</goal><goal>compile-custom</goal></goals></execution></executions></plugin></plugins><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build>

自动解析主机

protoc和grpc-java

2、写入maven依赖

<dependency><groupId>io.grpc</groupId><artifactId>grpc-all</artifactId><version>1.5.0</version></dependency><dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId><version>3.3.0</version></dependency>

3、重建maven项目,下载对应的依赖

二、开始写第一个demo

我们在之前配置的.proto文件目录在src/main/proto

1、在src/main下新建proto文件夹,创建test.proto文件

将proto文件夹marked as resources root资源目录

2、编辑test.proto文件


syntax = "proto3";option java_multiple_files = true;
option java_package = "com.ymm.usercenter.proto";
option java_outer_classname = "UserRegister";package com.ymm.usercenter;service UserCenterService {rpc userCenter (InvokeRequest) returns (InvokeResponse) {}
}message InvokeRequest {string id = 1;string userName = 2;int32 sex = 3;int32 age =4;string telephone = 5;string address = 6;}message InvokeResponse {string msg = 1;
}


syntax = “proto3”;
指定proto3语法,不指定默认是proto2语法

option java_package
输出包名,在target目录打包

service UserCenterService {rpc userCenter (InvokeRequest) returns (InvokeResponse) {}
}

定义服务名(UserCenterService),服务方法名(userCenter),传入参数类型(InvokeRequest),返回值类型(InvokeResponse)

                       **注:命名可以自行修改(下面代码会示例)**

定义InvokeRequest

 message InvokeRequest {string id = 1;string userName = 2;int32 sex = 3;int32 age =4;string telephone = 5;string address = 6;}
       注:fileId不可以重复,否则,编译生成target会报错提示

定义InvokeResponse

message InvokeResponse {string msg = 1;}

3、mvn install用插件生成target grpc目录

或者在右侧maven工具栏,执行protobuf compile

执行完毕我们可以看到在target下生成了grpc代码。

4、我们需要用这些类,我们需要将

grpc-java和java这两个目录,需要我们marked as sources root

5、下面开始写我们demo测试类


/**   服务提供类*/
package com.ymm.usercenter;import io.grpc.Server;
import io.grpc.ServerBuilder;import java.io.IOException;public class ServerProvider {public static void main(String[] args) throws IOException,InterruptedException {int port = 50052;Server server = ServerBuilder.forPort(port).addService(new UserCenterService()).build();server.start();System.out.println("--------start--------");Thread.sleep(1000 * 60 * 5);server.shutdown();System.out.println("--------shutdown------");}
}

package com.ymm.usercenter;import com.ymm.usercenter.proto.InvokeRequest;
import com.ymm.usercenter.proto.InvokeResponse;
import com.ymm.usercenter.proto.UserCenterServiceGrpc;
import io.grpc.stub.StreamObserver;/*服务实现类*/public class UserCenterService extends UserCenterServiceGrpc.UserCenterServiceImplBase {public void userCenter(InvokeRequest request, StreamObserver responseObserver){System.out.println("-------------request->--"+ request);String name = request.getUserName();Integer age = request.getAge();String address = request.getAddress();String id = request.getId();InvokeResponse response = InvokeResponse.newBuilder().setMsg(name + "cs" + " age " + String.valueOf(age)+ " from " +  address + " id " + id).build();responseObserver.onNext(response);responseObserver.onCompleted();}}
package com.ymm.usercenter;import com.ymm.usercenter.proto.InvokeRequest;
import com.ymm.usercenter.proto.InvokeResponse;
import com.ymm.usercenter.proto.UserCenterServiceGrpc;
import io.grpc.Channel;
import io.grpc.ManagedChannelBuilder;/** 客户端类*/
public class Client {public static void main(String[] args) {//InvokeRequest request = InvokeRequest.newBuilder().setUserName("cclllday").build();InvokeRequest.Builder builder = InvokeRequest.newBuilder();builder.setUserName("cclllday");builder.setAge(22);builder.setSex(1);builder.setAddress("tiansu");builder.setId("123456789");builder.setTelephone("1394545646");InvokeRequest request = builder.build();Channel channel = ManagedChannelBuilder.forAddress("localhost", 50052).usePlaintext(true).build();//UserCenterServiceGrpc.UserCenterServiceBlockingStub blockingStub = UserCenterServiceGrpc.newBlockingStub(channel);UserCenterServiceGrpc.UserCenterServiceBlockingStub blockingStub = UserCenterServiceGrpc.newBlockingStub(channel);InvokeResponse response = blockingStub.userCenter(request);System.out.println(response.getMsg());}
}
     注: userCenter是方法名,我们之前在test.proto定义过的,没有定义不可用
  • 1

项目结构:

6、先启动serviceProvider,再启动Client(本地application启动)

至此,一个grpc demo构建完成。

win10下搭建grpc 以及demo(idea maven java)相关推荐

  1. 在Win10下搭建web服务器,使用本机IP不能访问,但是使用localhos或127.0.0.1可以正常访问的解决办法...

    最近在在Win10下搭建web服务器,发现通过windows自带的浏览器win10 edge浏览器使用本机IP不能放问,但是使用localhos或127.0.0.1可以正常访问, 后来无意发现,使用w ...

  2. Win10下搭建旷视YOLOX(新一代anchor-free目标检测网络)并训练自定义CoCo格式数据集

    注意:原始的YOLOX只支持乌班图系统,因此以下所有操作均需要依赖博主自己的安装包.链接:https://pan.baidu.com/s/1CoQa8WjJ89gNfexK59Ewrw 提取码:qhi ...

  3. win10下搭建zipline python3.5量化回测平台环境

    win10下搭建zipline python3.5量化回测平台 1.安装 Anaconda 1.1 下载Anconda 1.2 安装 1.3 Anaconda Prompt 1.4 检查安装 1.5 ...

  4. win10下搭建qt+opencv环境

    文章目录 1 qt 2 cmake 3 opencv 4 demo 5 Q&A 5.1 qt安装vcredist_xx报错 原本使用pyqt开发界面程序,但是pyinstall打包后的程序实在 ...

  5. win10下搭建Apache+Mysql+PHP环境

    之前在本地都是使用wampserver集成包,一键安装稍微配置下就可以了.今天到了新公司,使用公司的新电脑搭建环境,想自己分别安装Apache.Mysql和PHP,不使用集成包,于是百度查询资料.下面 ...

  6. Win10下搭建绿色版基于WAMP的PHP开发环境

    1.安装Apache 下载最新稳定版http://www.apachehaus.com/downloads/httpd-2.4.23-x64-vc11.zip: 解压到D:\Apached下: 修改D ...

  7. Win10下搭建burpsuite pro,最详细的安装步骤(附Burpsuite pro安装包)

    Burpsuite pro安装步骤 jdk1.8下载 java环境配置 Burpsuite下载 Burpsuite安装 jdk1.8下载 jdk版本不要过高,否则可能会出现问题,推荐使用1.8版本 j ...

  8. WIN10下搭建react-native开发Android环境

    最近公司要求使用react-native进行移动端开发,据说macOS上开发坑会少的多,但我们是windows,莫法,直接抗吧!周末配置环境遇到很多问题,谨以此文做个记录... 准备 安装Chocol ...

  9. win10c语言编程环境搭建,win10 下搭建汇编语言环境及hello world程序

    前言 这学期汇编已经学了一大半了,可到现在为止只会一堆寄存器的名字,指令和各种寻址方式,这个语言到底是什么基本毫无概念.上次潘老师推荐了清华大学出版社王爽编的<汇编语言>这本书,在第一章就 ...

最新文章

  1. 昨晚今天的记忆 Need for SpeedCarbon Demo
  2. 数据恢复 从binlog文件
  3. python绘制3维图-1、2、3维图见过,用Python画出来的六维图见过么?
  4. java String format占位符
  5. ValueAnimator API 介绍
  6. CRM, C4C和Hybris的工作流简介
  7. 三公里社区争夺战—2021年社区团购研究报告
  8. 欧菲光:拟对子公司江西晶超增资9亿元
  9. 怎么用python将日期转化为数字_python实现将中文日期转换为数字日期
  10. 【校招面试 之 C/C++】第33题 C++ 11新特性(四)之STL容器
  11. 解决“/bin/bash^M: bad interpreter: No such file or directory”
  12. stm32 SSI读编码器
  13. 数字影像系统 接收服务器,影像存储与传输系统(PACS)
  14. 中国网络安全厂商、安全培训机构大全(2019-7-1)
  15. Unity3d第一人称视角如何设置
  16. 终于有人把元数据讲明白了
  17. 现在seo还好做吗(SEO越来越好做了吗)
  18. idea debug报错无法调试 Disconnected from the target VM
  19. 学会轻松完成组织架构图,轻轻松松完成任务!
  20. 电机标幺化、PI标幺化、锁相环PLL标幺化 详解电机模型相关标幺化处理

热门文章

  1. Python学生管理系统(界面版)
  2. 【Android】google plus、Facebook登陆sdk集成打包出aar的使用步骤
  3. .NET CORE 下收发邮件之 MAILKIT
  4. PS一键合成恐怖血腥吸血鬼人物效果
  5. Dockerfile自定义镜像
  6. 2月14魔兽服务器维护,魔兽世界2月14日-2月20日世界boss周常任务一览
  7. 16、持续集成流水线实践:流水线上的AI单元测试(MAVEN)
  8. py socket5 代理
  9. JavaBean对象与jfinal的Record对象互转
  10. 猫眼5万条评论告诉你《飞驰人生》值不值得看?!