Liebe gRPC/Spring-Benutzer, um die Benutzererfahrung von grpc-ecosystem/grpc-spring zu verbessern, haben wir diese Umfrage als Mittel zum Aufbau einer direkten Kommunikationslinie entwickelt. Ihr Feedback wird sehr geschätzt.
README: Englisch | 中文
Dokumentation: Englisch | 中文
Konfiguriert und führt den gRPC-Server automatisch mit Ihren @GrpcService
Implementierungen aus
Erstellt und verwaltet Ihre GRPC-Kanäle und Stubs automatisch mit @GrpcClient
Unterstützt andere grpc-Java-Varianten (z. B. Reactive gRPC (RxJava), grpc-kotlin, ...)
io.grpc.BindableService
)StubFactory
sUnterstützt Spring-Security
Unterstützt Spring Cloud
DiscoveryClient
von Spring (alle Varianten). Unterstützt Spring Sleuth als verteilte Tracing-Lösung
(Wenn brave-instrumentation-grpc vorhanden ist)
Unterstützt globale und benutzerdefinierte gRPC-Server/Client-Interceptors
Automatische metrische Unterstützung (Mikrometer-/Aktuator-basiert)
Funktioniert auch mit (nicht schattiertem) grpc-netty
Die neueste Version ist 3.1.0.RELEASE
Sie wurde mit Spring-Boot 3.2.4
und Spring-Cloud 2023.0.0
kompiliert, ist aber auch mit einer Vielzahl anderer Versionen kompatibel. Eine Übersicht aller Versionen und deren jeweilige Bibliotheksversionen finden Sie in unserer Dokumentation.
Hinweis: Dieses Projekt kann auch ohne Spring-Boot verwendet werden, allerdings erfordert dies eine manuelle Bean-Konfiguration.
Um eine Abhängigkeit mit Maven hinzuzufügen, verwenden Sie Folgendes:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
So fügen Sie eine Abhängigkeit mit Gradle hinzu:
dependencies {
implementation ' net.devh:grpc-spring-boot-starter:3.1.0.RELEASE '
}
Um eine Abhängigkeit mit Maven hinzuzufügen, verwenden Sie Folgendes:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-server-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
So fügen Sie eine Abhängigkeit mit Gradle hinzu:
dependencies {
implementation ' net.devh:grpc-server-spring-boot-starter:3.1.0.RELEASE '
}
Kommentieren Sie Ihre Serverschnittstellenimplementierung(en) mit @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 ();
}
}
Standardmäßig überwacht der grpc-Server Port 9090
. Diese und andere Einstellungen können über den Eigenschaftsmechanismus von Spring geändert werden. Der Server verwendet den grpc.server.
Präfix.
Weitere Einzelheiten finden Sie in unserer Dokumentation.
Um eine Abhängigkeit mit Maven hinzuzufügen, verwenden Sie Folgendes:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-client-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
So fügen Sie eine Abhängigkeit mit Gradle hinzu:
dependencies {
compile ' net.devh:grpc-client-spring-boot-starter:3.1.0.RELEASE '
}
Kommentieren Sie ein Feld Ihres grpc-Client-Stubs mit @GrpcClient(serverName)
Nicht in Verbindung mit @Autowired
oder @Inject
verwenden
@ GrpcClient ( "gRPC server name" )
private GreeterGrpc . GreeterBlockingStub greeterStub ;
Hinweis: Sie können denselben Grpc-Servernamen für mehrere Kanäle und auch verschiedene Stubs (auch mit unterschiedlichen Interceptoren) verwenden.
Dann können Sie Anfragen wie folgt an Ihren Server senden:
HelloReply response = stub . sayHello ( HelloRequest . newBuilder (). setName ( name ). build ());
Es besteht die Möglichkeit, die Zieladresse für jeden Client individuell zu konfigurieren. In manchen Fällen können Sie sich jedoch einfach auf die Standardkonfiguration verlassen. Sie können die Standard-URL-Zuordnung über NameResolver.Factory
-Beans anpassen. Wenn Sie diese Bean nicht konfigurieren, wird die Standard-URI mithilfe des Standardschemas und des Namens erraten (z. B. dns:/<name>
):
Diese und andere Einstellungen können über den Eigenschaftsmechanismus von Spring geändert werden. Die Clients verwenden grpc.client.(serverName).
Präfix.
Weitere Einzelheiten finden Sie in unserer Dokumentation.
Diese Bibliothek unterstützt sowohl grpc-netty
als auch grpc-netty-shaded
. Letzteres könnte Konflikte mit inkompatiblen grpc-Versionen oder Konflikte zwischen Bibliotheken verhindern, die unterschiedliche Netty-Versionen erfordern.
Hinweis: Wenn das schattierte Netty im Klassenpfad vorhanden ist, bevorzugt diese Bibliothek es immer gegenüber dem nicht schattierten grpc-netty.
Sie können es mit Maven wie folgt verwenden:
< 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 >
und so bei der Verwendung von 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)
Lesen Sie hier mehr über unsere Beispielprojekte.
Weitere Informationen finden Sie in unserer Dokumentation.
Beiträge sind immer willkommen! Detaillierte Richtlinien finden Sie unter CONTRIBUTING.md.