Usando Spring Boot junto con gRPC y Protobuf
spring-boot protocol-buffers (4)
A partir de https://spring.io/blog/2015/03/22/using-google-protocol-buffers-with-spring-mvc-based-rest-services , luego
eche un vistazo al soporte de SPR-13589 ProtobufHttpMessageConverter para protobuf 3.0.0-beta4 y relacionado SPR-13203 HttpMessageConverter basado en la biblioteca de Protostuff
Ese es un cierto apoyo para Proto3 que viene en la primavera 5. Como está en desarrollo, se anima a votar y plantear lo que es importante para su proyecto.
¿Alguien tiene algún ejemplo o pensamiento usando gRPC junto con Spring Boot?
https://github.com/yidongnan/grpc-spring-boot-starter
En el servidor
@GrpcService(GreeterGrpc.class)
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();
}
}
En el cliente
@GrpcClient("gRPC server name")
private Channel serverChannel;
GreeterGrpc.GreeterBlockingStub stub = GreeterGrpc.newBlockingStub(serverChannel);
HelloReply response = stub.sayHello(HelloRequest.newBuilder().setName(name).build());
Aquí uso gRpc y eureka para la comunicación. Este proyecto basado en Spring-boot
https://github.com/WThamira/grpc-spring-boot
Además, puedes usar el registro como cónsul. ejemplo completo en este informe
https://github.com/WThamira/gRpc-spring-boot-example
esta dependencia maven ayuda a gRpc
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>1.0.1</version>
</dependency>
y necesita mostrar el complemento en la parte inferior
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.0</version>
<configuration>
<!-- The version of protoc must match protobuf-java. If you don''t depend
on protobuf-java directly, you will be transitively depending on the protobuf-java
version that grpc depends on. -->
<protocArtifact>com.google.protobuf:protoc:3.0.2:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.0.1:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
Si todavía es relevante para usted, he creado gRPC spring-boot-starter aquí .
grpc-spring-boot-starter autoconfigura y ejecuta el servidor gRPC incrustado con los beans habilitados @ GRpcService .
El ejemplo más simple:
@GRpcService(grpcServiceOuterClass = GreeterGrpc.class)
public static class GreeterService implements GreeterGrpc.Greeter {
@Override
public void sayHello(GreeterOuterClass.HelloRequest request, StreamObserver<GreeterOuterClass.HelloReply> responseObserver) {
// omitted
}
}
También hay un ejemplo de cómo integrar el motor de arranque con Eureka en el archivo README del proyecto.