2015-08-11 6 views
19

Wer irgendwelche Beispiele oder Gedanken mit gRPC zusammen mit Spring Boot?Verwenden von Spring Boot zusammen mit gRPC und Protobuf

+3

https://spring.io/blog/2015/03/22/using-google-protocol-buffers-mit-feder-mvc-based-rest-services ist wahrscheinlich eine gute lesung. –

+0

Richtig, schon gefunden, dass man. Aber ich würde gerne wissen, ob jemand dies auch mit protobuf-Service-Definitionen verknüpft hat? – Markus

+0

Auf der Suche nach einem Beispiel zu –

Antwort

16

Wenn es noch für Sie relevant ist, habe ich gRPC Spring-Boot-Starter here erstellt.

grpc-Feder-boot-Starter automatisch konfiguriert und betreibt den eingebetteten gRPC Server mit @ Bohnen GRpcService-fähig ist.

Das einfachste Beispiel:

@GRpcService(grpcServiceOuterClass = GreeterGrpc.class) 
public static class GreeterService implements GreeterGrpc.Greeter { 

    @Override 
    public void sayHello(GreeterOuterClass.HelloRequest request, StreamObserver<GreeterOuterClass.HelloReply> responseObserver) { 
     // omitted 
    } 

} 

Es gibt auch ein Beispiel dafür, wie die Starter mit Eureka in Readme-Datei des Projektes zu integrieren.

2

ab https://spring.io/blog/2015/03/22/using-google-protocol-buffers-with-spring-mvc-based-rest-services, dann
einen Blick auf SPR-13589 ProtobufHttpMessageConverter support for protobuf 3.0.0-beta4 und SPR-13203 HttpMessageConverter based on Protostuff library

zusammen, dass einige Unterstützung für proto3 ist im Frühjahr kommenden 5. Wie es unter einer Entwicklung gefördert wird, wählen und zu erhöhen, was wichtig für ihr Projekt.

+0

https://github.com/WThamiara/gRpc-spring-boot-example ist das richtige Beispiel für diesen Fall, denke ich – wthamira

0

https://github.com/yidongnan/grpc-spring-boot-starter

In Server

@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(); 
    } 
} 

Im Client

@GrpcClient("gRPC server name") 
private Channel serverChannel; 

GreeterGrpc.GreeterBlockingStub stub = GreeterGrpc.newBlockingStub(serverChannel); 
HelloReply response = stub.sayHello(HelloRequest.newBuilder().setName(name).build()); 
0

In hier verwende ich gRpc und EUREKA für die Kommunikation. Dieses Projekt basiert auf Frühling-boot

https://github.com/WThamira/grpc-spring-boot

zusätzlich Canuse Sie als Konsul auch registrieren. vollständiges Beispiel in diesem Repo

https://github.com/WThamira/gRpc-spring-boot-example

diese Maven Abhängigkeit Hilfe 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> 

und Plugin-Show müssen unten in

 <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>