将Spring Boot与GRPC和Protobuf结合使用

csbfibhn  于 2022-10-04  发布在  Spring
关注(0)|答案(4)|浏览(182)

有没有人有将GRPC和Spring Boot结合使用的例子或想法?

kmb7vmvb

kmb7vmvb1#

如果它仍然与您相关,我已经创建了GRPC Spring-Boot-starter here

  • GRPC-SPING-BOOT-STARTER使用@GRpcService启用*Bean自动配置并运行嵌入式GRPC服务器。

最简单的例子是:

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

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

}

在项目的自述文件中还有一个如何将Starter与Eureka集成的示例。

nr7wwzry

nr7wwzry2#

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

在服务器中

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

在客户端中

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

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

ql3eal8s3#

如果您需要GRPC客户端库,即使用存根,请查看我的库https://github.com/sfcodes/grpc-client-spring-boot

该库将自动扫描您的类路径,找到所有GRPC存根类,示例化它们,并使用ApplicationContext将它们注册为Bean;允许您像注入任何其他Spring Bean一样轻松地@Autowire和注入它们。例如:

@RestController
public class GreeterController {

    @Autowired  // <===== gRPC stub is autowired!
    private GreeterGrpc.GreeterBlockingStub greeterStub;

    @RequestMapping(value = "/sayhello")
    public String sayHello(@RequestParam String name) {
        HelloRequest request = HelloRequest.newBuilder().setName(name).build();
        HelloReply reply = greeterStub.sayHello(request);
        return reply.getMessage();
    }
}

对于GRPC服务器库,我也推荐LogNet/grpc-spring-boot-starter

g6baxovj

g6baxovj4#

https://spring.io/blog/2015/03/22/using-google-protocol-buffers-with-spring-mvc-based-rest-services开始,然后
查看SPR-13589 ProtobufHttpMessageConverter support for protobuf 3.0.0-beta4和相关的SPR-13203 HttpMessageConverter based on Protostuff library

这就是说,对Proto3的一些支持将在Spring 5中到来。因为它还在开发中,所以鼓励人们投票并提出对他们的项目重要的东西。

相关问题