gRPCを使ってあそんでみるの目的
ログデータを永続化するgRPCサービスを立ち上げログを記録する。
今回のお題
IDL(Interface Description Language)からRPC用のJavaソースを生成する環境を構築する。
最後にJarファイルを作成する。
■事前環境
・Windows10 バージョン21H2
・IntelliJ IDEA 2022.1.4(Community Edition)
・OpenJDK Runtime Environment Zulu17.36+17-CA (build 17.0.4.1+1-LTS)
・Gradle
1.新規プロジェクトを作成
2.IDLコンパイル用Gradleタスクの追加
2.1.com.google.protobufプラグインを追加
build.gradleの必要箇所を抜粋
plugins {
id 'java'
id "com.google.protobuf" version "0.9.1"
}
2.2.Gradleタスクに追加されていること確認
Gradleプロジェクトを再ロード後、6つのタスクが追加されている事を確認。
3.IDLのコンパイル環境を構築
3.1.IDLコンパイラーとJava用クラスファイル生成プラグインを追加
build.gradleの必要箇所を抜粋
protobuf {
protoc { artifact = "com.google.protobuf:protoc:3.21.7" }
plugins {
grpc { artifact = "io.grpc:protoc-gen-grpc-java:1.50.0" }
}
generateProtoTasks {
all()*.plugins { grpc {} }
}
}
3.2.依存関係の追加
Java9以降には、'javax.annotation:javax.annotation-api:1.3.2'が必要となります。
build.gradleの必要箇所を抜粋
dependencies {
implementation 'io.grpc:grpc-netty-shaded:1.49.2'
implementation 'io.grpc:grpc-protobuf:1.49.2'
implementation 'io.grpc:grpc-stub:1.49.2'
implementation 'javax.annotation:javax.annotation-api:1.3.2'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
}
4.IDLファイルの作成
src/main/protoの配下に以下のファイルを作成する。
logging.proto
syntax = "proto3";
option java_multiple_files = true;
option java_package = "example.grpc.logging";
option java_outer_classname = "LoggingProto";
package logging;
service Logging {
rpc record (LoggingRequest) returns (LoggingResponse) {}
}
message LoggingRequest {
string status = 1;
string message = 2;
}
message LoggingResponse {
string status = 1;
string message = 2;
}
5.IDLよりJavaクラスファイルを生成
GradleののgenerateProtoタスクを実行。
gRPC用のJavaファイルが build/generated 以下に生成される。
参考
今回、利用したソース一式です。
https://github.com/shigemax999/sample-grpc-logging.git