spring-boot - 如何在 Spring Boot 中使用 grpc

标签 spring-boot grpc

我是 grpc 新手,我不知道如何将它与 Spring Boot 一起使用,但使用下面的链接

  1. https://github.com/saturnism/grpc-java-by-example/tree/master/simple-grpc-server

  2. https://github.com/saturnism/grpc-java-by-example/tree/master/simple-grpc-client

注意*:-第一个用于服务器项目,第二个用于客户端项目。

我已经使用 Spring Boot 在 grpc 上创建了一个项目,但我无法理解其中的一件事,即在 grpc 客户端项目中我如何使用 grpc 服务器项目中的 protobuf 生成的类。因为它没有在 grpc 客户端项目中创建任何 proto 文件,那么我如何在 grpc 客户端项目中使用 grpc 服务器项目的类,或者我们可以为 grpc 服务器和客户端创建一个项目,而不是为两者创建一个不同的项目。

我有两个与此问题相关的疑问要问:- 1. 如何在另一个项目中使用protobuf编译器生成的grpc类,例如客户端和服务器是两个不同的项目,并且只有服务器有proto生成的文件,而客户端想要使用相同的类。

  • 我如何在一个项目中创建所有这些东西意味着客户端和服务器在一个项目中,然后我如何通过逐步演示来运行这个项目。
  • 最佳答案

    有两种方法可以做到这一点:

    1. 在两个项目之间复制 .proto 文件,并让每个项目生成自己的生成代码副本。这可能是最简单的,并且允许您避免将生成的代码 checkin 源代码管理。这种方法的缺点是,如果您修改其中一个而不修改另一个,.proto 文件可能会过时。

    2. .proto 保存在客户端和服务器的同一存储库中,并使两者都依赖于生成的代码。这允许同时为客户端和服务器修改原型(prototype),但要求代码位于同一个存储库中(这有时称为“Monorepo”方法)。这样做的缺点是客户端和服务器存储库可能会变得太大,需要分开。

    Google(Protobuf 的作者)通常使用选项#2,但许多 Protobuf 用户更喜欢选项 1。我强烈建议每次重新生成类,而不是 checkin 生成的代码。 Protobuf 类的 ABI 偶尔会发生变化,并且您将失去 Protobuf 的向后兼容性。

    关于spring-boot - 如何在 Spring Boot 中使用 grpc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55810926/

    相关文章:

    json - 如何在 Go 运行时创建 "duck-typed"grpc protobuf 消息?

    node.js - 缺少 node-v59-linux-x64/grpc_node.node

    java - 我可以有一个使用 Spring Data JPA 处理多个实体类的 JPA 存储库接口(interface)吗?

    java - 如何使用 Spring Boot 配置嵌入式 ActiveMQ Broker URL

    javascript - 适用于 Java、JS、C# 的 Gradle GRPC 编译

    grpc - 在服务器拦截器中应答 gRPC 调用

    Spring Boot 执行器运行状况端点

    java - Spring Boot中请求字段的条件验证

    mysql - 使用多个where子句在spring data jpa中删除

    .net - grpc方法调用错误: Failed to pick subchannel