Estimados usuarios de gRPC/Spring, para mejorar la experiencia de usuario de grpc-ecosystem/grpc-spring, hemos desarrollado esta encuesta como un medio para establecer una línea directa de comunicación. Apreciamos mucho sus comentarios.
LÉAME: Inglés | 中文
Documentación: Inglés | 中文
Configura y ejecuta automáticamente el servidor gRPC con sus implementaciones @GrpcService
Crea y administra automáticamente sus canales y resguardos de grpc con @GrpcClient
Admite otras versiones de grpc-java (por ejemplo, gRPC reactivo (RxJava), grpc-kotlin, ...)
io.grpc.BindableService
)StubFactory
s personalizadosSoporta seguridad de resorte
Soporta nube de primavera
DiscoveryClient
de Spring (todos los tipos) Admite Spring Sleuth como solución de seguimiento distribuido
(Si valiente-instrumentación-grpc está presente)
Admite interceptores de cliente/servidor gRPC globales y personalizados
Soporte métrico automático (basado en micrómetro/actuador)
También funciona con grpc-netty (no sombreado)
La última versión es 3.1.0.RELEASE
se compiló con spring-boot 3.2.4
y spring-cloud 2023.0.0
pero también es compatible con una gran variedad de otras versiones. Puede encontrar una descripción general de todas las versiones y sus respectivas versiones de biblioteca en nuestra documentación.
Nota: Este proyecto también se puede utilizar sin Spring-Boot, sin embargo, eso requiere alguna configuración manual del bean.
Para agregar una dependencia usando Maven, use lo siguiente:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Para agregar una dependencia usando Gradle:
dependencies {
implementation ' net.devh:grpc-spring-boot-starter:3.1.0.RELEASE '
}
Para agregar una dependencia usando Maven, use lo siguiente:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-server-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Para agregar una dependencia usando Gradle:
dependencies {
implementation ' net.devh:grpc-server-spring-boot-starter:3.1.0.RELEASE '
}
Anote las implementaciones de la interfaz de su servidor con @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 ();
}
}
De forma predeterminada, el servidor grpc escuchará el puerto 9090
. Estas y otras configuraciones se pueden cambiar mediante el mecanismo de propiedades de Spring. El servidor utiliza grpc.server.
prefijo.
Consulte nuestra documentación para obtener más detalles.
Para agregar una dependencia usando Maven, use lo siguiente:
< dependency >
< groupId >net.devh</ groupId >
< artifactId >grpc-client-spring-boot-starter</ artifactId >
< version >3.1.0.RELEASE</ version >
</ dependency >
Para agregar una dependencia usando Gradle:
dependencies {
compile ' net.devh:grpc-client-spring-boot-starter:3.1.0.RELEASE '
}
Anote un campo de su código auxiliar de cliente grpc con @GrpcClient(serverName)
No lo use junto con @Autowired
o @Inject
@ GrpcClient ( "gRPC server name" )
private GreeterGrpc . GreeterBlockingStub greeterStub ;
Nota: Puede utilizar el mismo nombre de servidor grpc para múltiples canales y también diferentes stubs (incluso con diferentes interceptores).
Luego puede enviar consultas a su servidor así:
HelloReply response = stub . sayHello ( HelloRequest . newBuilder (). setName ( name ). build ());
Es posible configurar la dirección de destino para cada cliente individualmente. Sin embargo, en algunos casos, puedes confiar simplemente en la configuración predeterminada. Puede personalizar la asignación de URL predeterminada a través de los beans NameResolver.Factory
. Si no configura ese bean, entonces la uri predeterminada se adivinará usando el esquema predeterminado y el nombre (por ejemplo: dns:/<name>
):
Estas y otras configuraciones se pueden cambiar mediante el mecanismo de propiedades de Spring. Los clientes utilizan grpc.client.(serverName).
prefijo.
Consulte nuestra documentación para obtener más detalles.
Esta biblioteca admite grpc-netty
y grpc-netty-shaded
. El último podría evitar conflictos con versiones de grpc incompatibles o conflictos entre bibliotecas que requieren diferentes versiones de netty.
Nota: Si el netty sombreado está presente en el classpath, entonces esta biblioteca siempre lo favorecerá sobre el grpc-netty no sombreado.
Puedes usarlo con Maven así:
< 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 >
y así al usar 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)
Lea más sobre nuestros proyectos de ejemplo aquí.
Consulte nuestra documentación para obtener ayuda.
¡Las contribuciones siempre son bienvenidas! Consulte CONTRIBUTING.md para obtener pautas detalladas.