Para pengguna gRPC/Spring yang terhormat, untuk meningkatkan pengalaman pengguna grpc-ecosystem/grpc-spring, kami telah mengembangkan survei ini sebagai sarana untuk menjalin jalur komunikasi langsung. Masukan Anda sangat kami hargai.
BACA: Bahasa Inggris | tidak
Dokumentasi: Bahasa Inggris | tidak
Konfigurasikan dan jalankan server gRPC secara otomatis dengan implementasi @GrpcService
Anda
Secara otomatis membuat dan mengelola saluran dan stub grpc Anda dengan @GrpcClient
Mendukung varian grpc-java lainnya (misalnya gRPC Reaktif (RxJava), grpc-kotlin, ...)
io.grpc.BindableService
)StubFactory
khususMendukung Keamanan Musim Semi
Mendukung Musim Semi Cloud
DiscoveryClient
pegas (semua varian) Mendukung Spring Sleuth sebagai solusi penelusuran terdistribusi
(Jika berani-instrumentasi-grpc ada)
Mendukung pencegat server/klien gRPC global dan khusus
Dukungan metrik otomatis (berbasis mikrometer/aktuator)
Juga berfungsi dengan grpc-netty (tanpa bayangan).
Versi terbarunya adalah 3.1.0.RELEASE
yang dikompilasi dengan spring-boot 3.2.4
dan spring-cloud 2023.0.0
tetapi juga kompatibel dengan berbagai macam versi lainnya. Ikhtisar semua versi dan versi perpustakaannya masing-masing dapat ditemukan di dokumentasi kami.
Catatan: Proyek ini juga dapat digunakan tanpa Spring-Boot, namun memerlukan beberapa konfigurasi kacang manual.
Untuk menambahkan ketergantungan menggunakan Maven, gunakan yang berikut ini:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Untuk menambahkan ketergantungan menggunakan Gradle:
dependencies {
implementation ' net.devh:grpc-spring-boot-starter:3.1.0.RELEASE '
}
Untuk menambahkan ketergantungan menggunakan Maven, gunakan yang berikut ini:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-server-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Untuk menambahkan ketergantungan menggunakan Gradle:
dependencies {
implementation ' net.devh:grpc-server-spring-boot-starter:3.1.0.RELEASE '
}
Beri anotasi pada implementasi antarmuka server Anda dengan @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 ();
}
}
Secara default, server grpc akan mendengarkan port 9090
. Pengaturan ini dan lainnya dapat diubah melalui mekanisme properti Spring. Server menggunakan grpc.server.
awalan.
Lihat dokumentasi kami untuk lebih jelasnya.
Untuk menambahkan ketergantungan menggunakan Maven, gunakan yang berikut ini:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-client-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Untuk menambahkan ketergantungan menggunakan Gradle:
dependencies {
compile ' net.devh:grpc-client-spring-boot-starter:3.1.0.RELEASE '
}
Beri anotasi pada bidang stub klien grpc Anda dengan @GrpcClient(serverName)
Jangan gunakan bersamaan dengan @Autowired
atau @Inject
@ GrpcClient ( "gRPC server name" )
private GreeterGrpc . GreeterBlockingStub greeterStub ;
Catatan: Anda dapat menggunakan nama server grpc yang sama untuk beberapa saluran dan juga stub yang berbeda (bahkan dengan interseptor yang berbeda).
Kemudian Anda dapat mengirim pertanyaan ke server Anda seperti ini:
HelloReply response = stub . sayHello ( HelloRequest . newBuilder (). setName ( name ). build ());
Dimungkinkan untuk mengkonfigurasi alamat target untuk setiap klien secara individual. Namun dalam beberapa kasus, Anda hanya dapat mengandalkan konfigurasi default. Anda dapat menyesuaikan pemetaan url default melalui kacang NameResolver.Factory
. Jika Anda tidak mengonfigurasi kacang tersebut, maka uri default akan ditebak menggunakan skema default dan namanya (misalnya: dns:/<name>
):
Pengaturan ini dan lainnya dapat diubah melalui mekanisme properti Spring. Klien menggunakan grpc.client.(serverName).
awalan.
Lihat dokumentasi kami untuk lebih jelasnya.
Pustaka ini mendukung grpc-netty
dan grpc-netty-shaded
. Yang terakhir mungkin mencegah konflik dengan versi grpc yang tidak kompatibel atau konflik antar perpustakaan yang memerlukan versi netty berbeda.
Catatan: Jika netty yang diarsir ada di classpath, maka perpustakaan ini akan selalu lebih memilihnya daripada netty grpc-netty yang tidak diarsir.
Anda dapat menggunakannya dengan Maven seperti ini:
< 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 >
dan seperti ini saat menggunakan 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)
Baca selengkapnya tentang contoh proyek kami di sini.
Lihat dokumentasi kami untuk bantuan.
Kontribusi selalu diterima! Silakan lihat CONTRIBUTING.md untuk panduan rinci.