2017-07-28 10 views
0

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

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

しかし、これらのクラスはレポで見つけることができません。 .protoファイルをコンパイルするときに生成されていれば、私はまだ彼らが何であるか正確には曇っていますか?どんな助け/ポインタも高く評価されます。ありがとう。

答えて

1

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

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

ブロッキングスタブは同期(現在実行中のスレッドをブロック)し、呼び出されたrpc呼び出しが応答を返すか例外を発生させるまで返されないようにします。 UIスレッドからブロックスタブ上でrpcを起動しないように注意してください。これは、応答しない/ janky UIになるためです。

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

詳細については、スタブhereに関するgrpcのマニュアルを参照してください。

1

実際にはスタブクラスは.protoファイルから生成されます。これはprotobuf-gradle-pluginで自動的に行われます。カスタムコードを使用してクライアント側のスタブクラスを拡張し、データをサーバーに送信します。

Githubからプロジェクトをクローンしてビルドする手順に従っている場合、これはすべて自動的に行われます。 master、彼らが言うようにv1.4.0タグのクローンを作成しないようにしてください、あなたはおそらくそれ以外の問題に実行したい:

git clone -b v1.4.0 https://github.com/grpc/grpc-java.git 
関連する問題