9

Go でサーバーと通信するための Java grpc クライアントを作成しようとしています。私は grpc を初めて使用するので、このチュートリアルgRPC Java Tutorialに従っています。これらの例では、 githubの他の場所からインポートしたように見えるブロッキングおよび非ブロッキング スタブを参照しています。

import io.grpc.examples.routeguide.RouteGuideGrpc.RouteGuideBlockingStub;
import io.grpc.examples.routeguide.RouteGuideGrpc.RouteGuideStub;
...
...    
blockingStub = RouteGuideGrpc.newBlockingStub(channel);
asyncStub = RouteGuideGrpc.newStub(channel);

ただし、レポでこれらのクラスを見つけることができません。.proto ファイルをコンパイルするときに生成されたはずですか? ヘルプ/ポインタをいただければ幸いです。ありがとう。

4

2 に答える 2

14

grpc スタブ クラスは、protoc コンパイラを実行すると生成され、proto ファイルでサービス宣言が検出されます。スタブ クラスは、クライアントがサービス エンドポイントで rpc 呼び出しを行うために使用する API です。

これらのスタブには、ブロッキングと非同期の 2 つの種類があります。

ブロッキング スタブは同期的 (現在実行中のスレッドをブロックする) であり、呼び出された rpc 呼び出しが、応答を返すか例外が発生するまで返されないようにします。ブロッキング スタブで UI スレッドから rpc を呼び出さないように注意する必要があります。これにより、UI が応答しなくなったり、ぎこちなくなったりする可能性があります。

非同期スタブは、StreamObserver コールバック オブジェクトを介して非同期的に応答が返されるノンブロッキング rpc 呼び出しを行います。

詳細については、スタブに関する grpc ドキュメントを参照してください

于 2017-07-28T18:32:32.530 に答える