win10下搭建grpc 以及demo(idea maven java)
原文格式清晰,转载自: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)相关推荐
- 在Win10下搭建web服务器,使用本机IP不能访问,但是使用localhos或127.0.0.1可以正常访问的解决办法...
最近在在Win10下搭建web服务器,发现通过windows自带的浏览器win10 edge浏览器使用本机IP不能放问,但是使用localhos或127.0.0.1可以正常访问, 后来无意发现,使用w ...
- Win10下搭建旷视YOLOX(新一代anchor-free目标检测网络)并训练自定义CoCo格式数据集
注意:原始的YOLOX只支持乌班图系统,因此以下所有操作均需要依赖博主自己的安装包.链接:https://pan.baidu.com/s/1CoQa8WjJ89gNfexK59Ewrw 提取码:qhi ...
- win10下搭建zipline python3.5量化回测平台环境
win10下搭建zipline python3.5量化回测平台 1.安装 Anaconda 1.1 下载Anconda 1.2 安装 1.3 Anaconda Prompt 1.4 检查安装 1.5 ...
- win10下搭建qt+opencv环境
文章目录 1 qt 2 cmake 3 opencv 4 demo 5 Q&A 5.1 qt安装vcredist_xx报错 原本使用pyqt开发界面程序,但是pyinstall打包后的程序实在 ...
- win10下搭建Apache+Mysql+PHP环境
之前在本地都是使用wampserver集成包,一键安装稍微配置下就可以了.今天到了新公司,使用公司的新电脑搭建环境,想自己分别安装Apache.Mysql和PHP,不使用集成包,于是百度查询资料.下面 ...
- Win10下搭建绿色版基于WAMP的PHP开发环境
1.安装Apache 下载最新稳定版http://www.apachehaus.com/downloads/httpd-2.4.23-x64-vc11.zip: 解压到D:\Apached下: 修改D ...
- Win10下搭建burpsuite pro,最详细的安装步骤(附Burpsuite pro安装包)
Burpsuite pro安装步骤 jdk1.8下载 java环境配置 Burpsuite下载 Burpsuite安装 jdk1.8下载 jdk版本不要过高,否则可能会出现问题,推荐使用1.8版本 j ...
- WIN10下搭建react-native开发Android环境
最近公司要求使用react-native进行移动端开发,据说macOS上开发坑会少的多,但我们是windows,莫法,直接抗吧!周末配置环境遇到很多问题,谨以此文做个记录... 准备 安装Chocol ...
- win10c语言编程环境搭建,win10 下搭建汇编语言环境及hello world程序
前言 这学期汇编已经学了一大半了,可到现在为止只会一堆寄存器的名字,指令和各种寻址方式,这个语言到底是什么基本毫无概念.上次潘老师推荐了清华大学出版社王爽编的<汇编语言>这本书,在第一章就 ...
最新文章
- 昨晚今天的记忆 Need for SpeedCarbon Demo
- 数据恢复 从binlog文件
- python绘制3维图-1、2、3维图见过,用Python画出来的六维图见过么?
- java String format占位符
- ValueAnimator API 介绍
- CRM, C4C和Hybris的工作流简介
- 三公里社区争夺战—2021年社区团购研究报告
- 欧菲光:拟对子公司江西晶超增资9亿元
- 怎么用python将日期转化为数字_python实现将中文日期转换为数字日期
- 【校招面试 之 C/C++】第33题 C++ 11新特性(四)之STL容器
- 解决“/bin/bash^M: bad interpreter: No such file or directory”
- stm32 SSI读编码器
- 数字影像系统 接收服务器,影像存储与传输系统(PACS)
- 中国网络安全厂商、安全培训机构大全(2019-7-1)
- Unity3d第一人称视角如何设置
- 终于有人把元数据讲明白了
- 现在seo还好做吗(SEO越来越好做了吗)
- idea debug报错无法调试 Disconnected from the target VM
- 学会轻松完成组织架构图,轻轻松松完成任务!
- 电机标幺化、PI标幺化、锁相环PLL标幺化 详解电机模型相关标幺化处理