gRPC/Spring ユーザーの皆様、grpc-ecosystem/grpc-spring のユーザー エクスペリエンスを向上させるために、私たちは直接のコミュニケーション ラインを確立する手段としてこのアンケートを開発しました。皆様のご意見をお待ちしております。
お読みください: 英語 | 中国語
ドキュメント:英語 | 中国語
@GrpcService
実装を使用して gRPC サーバーを自動的に構成して実行します
@GrpcClient
を使用して grpc チャネルとスタブを自動的に作成および管理します
他の grpc-java フレーバーをサポート (例: Reactive gRPC (RxJava)、grpc-kotlin など)
io.grpc.BindableService
ベース) で動作する必要があります。StubFactory
が必要ですSpring-Securityをサポート
Spring Cloudをサポート
DiscoveryClient
からサービスのターゲット アドレスを読み取ります (すべてのフレーバー)分散トレース ソリューションとして Spring Sleuth をサポート
(brave-instrumentation-grpc が存在する場合)
グローバルおよびカスタム gRPC サーバー/クライアント インターセプターをサポート
自動メトリックサポート (マイクロメーター/アクチュエーターベース)
(非シェーディング) grpc-netty でも動作します
最新バージョンは3.1.0.RELEASE
で、spring-boot 3.2.4
および spring-cloud 2023.0.0
でコンパイルされましたが、他のさまざまなバージョンとも互換性があります。すべてのバージョンとそれぞれのライブラリ バージョンの概要については、ドキュメントを参照してください。
注:このプロジェクトは Spring-Boot なしでも使用できますが、手動による Bean 構成が必要になります。
Maven を使用して依存関係を追加するには、次を使用します。
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Gradle を使用して依存関係を追加するには:
dependencies {
implementation ' net.devh:grpc-spring-boot-starter:3.1.0.RELEASE '
}
Maven を使用して依存関係を追加するには、次を使用します。
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-server-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Gradle を使用して依存関係を追加するには:
dependencies {
implementation ' net.devh:grpc-server-spring-boot-starter:3.1.0.RELEASE '
}
サーバー インターフェイス実装に@GrpcService
の注釈を付ける
@ GrpcService
public class GrpcServerService extends GreeterGrpc . GreeterImplBase {
@ Override
public void sayHello ( HelloRequest req , StreamObserver < HelloReply > responseObserver ) {
HelloReply reply = HelloReply . newBuilder (). setMessage ( "Hello ==> " + req . getName ()). build ();
responseObserver . onNext ( reply );
responseObserver . onCompleted ();
}
}
デフォルトでは、grpc サーバーはポート9090
をリッスンします。これらおよびその他の設定は、Spring のプロパティ メカニズムを介して変更できます。サーバーはgrpc.server.
接頭語。
詳細については、ドキュメントを参照してください。
Maven を使用して依存関係を追加するには、次を使用します。
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-client-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Gradle を使用して依存関係を追加するには:
dependencies {
compile ' net.devh:grpc-client-spring-boot-starter:3.1.0.RELEASE '
}
grpc クライアント スタブのフィールドに@GrpcClient(serverName)
の注釈を付けます。
@Autowired
または@Inject
と組み合わせて使用しないでください
@ GrpcClient ( "gRPC server name" )
private GreeterGrpc . GreeterBlockingStub greeterStub ;
注:複数のチャネルおよび異なるスタブに同じ grpc サーバー名を使用できます (異なるインターセプタを使用する場合でも)。
次に、次のようにしてサーバーにクエリを送信できます。
HelloReply response = stub . sayHello ( HelloRequest . newBuilder (). setName ( name ). build ());
各クライアントのターゲット アドレスを個別に設定することができます。ただし、場合によっては、デフォルト設定のみを使用することもできます。 NameResolver.Factory
Bean を介してデフォルトの URL マッピングをカスタマイズできます。その Bean を設定しない場合、デフォルトの URI はデフォルトのスキームと名前 (例: dns:/<name>
) を使用して推測されます。
これらおよびその他の設定は、Spring のプロパティ メカニズムを介して変更できます。クライアントはgrpc.client.(serverName).
接頭語。
詳細については、ドキュメントを参照してください。
このライブラリはgrpc-netty
とgrpc-netty-shaded
両方をサポートしています。後者の場合、互換性のない grpc バージョンとの競合や、異なるバージョンの netty を必要とするライブラリ間の競合を防ぐことができます。
注:シェーディングされた netty がクラスパス上に存在する場合、このライブラリは常に、シェーディングされていない grpc-netty よりもそれを優先します。
次のように Maven で使用できます。
< dependency >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty</ artifactId >
< version >${grpcVersion}</ version >
</ dependency >
<!-- For both -->
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-spring-boot-starter</ artifactId >
< version >...</ version >
< exclusions >
< exclusion >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty-shaded</ artifactId >
</ exclusion >
</ exclusions >
</ dependency >
<!-- For the server (only) -->
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-server-spring-boot-starter</ artifactId >
< version >...</ version >
< exclusions >
< exclusion >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty-shaded</ artifactId >
</ exclusion >
</ exclusions >
</ dependency >
<!-- For the client (only) -->
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-client-spring-boot-starter</ artifactId >
< version >...</ version >
< exclusions >
< exclusion >
< groupId >io.grpc</ groupId >
< artifactId >grpc-netty-shaded</ artifactId >
</ exclusion >
</ exclusions >
</ dependency >
Gradle を使用する場合は次のようになります。
implementation " io.grpc:grpc-netty: ${ grpcVersion } "
implementation ' net.devh:grpc-spring-boot-starter:... ' exclude group : ' io.grpc ' , module : ' grpc-netty-shaded ' // For both
implementation ' net.devh:grpc-client-spring-boot-starter:... ' exclude group : ' io.grpc ' , module : ' grpc-netty-shaded ' // For the client (only)
implementation ' net.devh:grpc-server-spring-boot-starter:... ' exclude group : ' io.grpc ' , module : ' grpc-netty-shaded ' // For the server (only)
サンプルプロジェクトの詳細については、こちらをご覧ください。
ヘルプについては、ドキュメントを参照してください。
貢献はいつでも大歓迎です!詳細なガイドラインについては、CONTRIBUTING.md を参照してください。