KotlinでのgRPCサーバー、クライアントの実装サンプル。
プロジェクトルートにて下記のコマンドを実行。
$ ./gradlew bootRun
もしくはIntelliJ IDEAでGradleビューを開き、Tasks -> application -> bootRun
を実行。
ターミナルから下記のコマンドを実行。
$ curl -H 'Content-Type:application/json' -X POST -d '{"name":"Sarina"}' http://localhost:8080/createmessage
nameのパラメータで渡した値が埋め込まれたメッセージが返却される。
この例の場合は「Hello Sarina」。
ターミナルから下記のコマンドを実行。
$ ./gradlew generateProto
もしくはIntelliJ IDEAでGradleビューを開き、Tasks -> other -> generateProto
を実行。
ユーザーからの操作を受け付け、gRPCサーバーへ接続するREST API。
以下のパッケージから成る。
- controller・・・リクエストを受け付けるController。
- form・・・リクエスト、レスポンスのパラメータを保持するデータクラス
- interceptor・・・gRPC通信のクライアント側のインターセプター。
gRPCのリクエストを受け付けるサーバー。 以下のパッケージから成る。
- grpcservice・・・gRPCの通信のインターフェースとなるメソッドが定義された層。
- interceptor・・・gRPC通信のサーバー側のインターセプター。
- service・・・サーバー側のビジネスロジックを実装する層。
Protocol Buffersの定義から生成されたファイル群。
Protocol Buffersの定義ファイル。
Springアプリケーションの中で通常のHTTP通信(8080ポート)とgRPC通信(6565ポート)の接続が両方できるようになっていて、「REST APIへのHTTP通信→gRPCのServiceを実行」という流れで動作確認できるようになっている。