spring spring-boot protocol-buffers grpc

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.