这几天由于工作的原因,涉及到系统之间的通信,rpc调用方式不失为内部系统之间的一种高效简单的方式,至于rpc是什么,这里不多说,自行Google去。
在比较了Thrift(Apache开源项目)和grpc(谷歌去年开源的一个项目)后,选择了grpc,这里不想多说它们两个之间的区别。
在阅读下面代码之前你先要去了解一下protocol buffer
本文涉及的程序,用的开发工具是idea2016.2.5,java环境是jdk1.8。
用idea新建一个maven项目,Id信息如下
<groupId>com.mingluck.test</groupId>
<artifactId>grpc</artifactId>
创建如下的目录结构(包括文件)
看下面的test.proto的内容:
syntax = "proto3";
package grpc;
option java_package = "com.mingluck.grpc";
option java_outer_classname = "HelloWorldServiceProto";
option java_multiple_files = true;
//服务端接口类
service Greeter {
//服务端接口方法
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
//请求参数
message HelloRequest {
string name = 1;
string sex = 2;
}
//响应参数
message HelloReply {
string message = 1;
}
其中java_package 指定了生成的类的包名
pom.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mingluck.test</groupId>
<artifactId>grpc</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-all</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons<