我是 grpc 新手,我不知道如何将它与 Spring Boot 一起使用,但使用下面的链接
https://github.com/saturnism/grpc-java-by-example/tree/master/simple-grpc-server
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生成的文件,而客户端想要使用相同的类。
- 我如何在一个项目中创建所有这些东西意味着客户端和服务器在一个项目中,然后我如何通过逐步演示来运行这个项目。
最佳答案
有两种方法可以做到这一点:
在两个项目之间复制
.proto
文件,并让每个项目生成自己的生成代码副本。这可能是最简单的,并且允许您避免将生成的代码 checkin 源代码管理。这种方法的缺点是,如果您修改其中一个而不修改另一个,.proto
文件可能会过时。将
.proto
保存在客户端和服务器的同一存储库中,并使两者都依赖于生成的代码。这允许同时为客户端和服务器修改原型(prototype),但要求代码位于同一个存储库中(这有时称为“Monorepo”方法)。这样做的缺点是客户端和服务器存储库可能会变得太大,需要分开。
Google(Protobuf 的作者)通常使用选项#2,但许多 Protobuf 用户更喜欢选项 1。我强烈建议每次重新生成类,而不是 checkin 生成的代码。 Protobuf 类的 ABI 偶尔会发生变化,并且您将失去 Protobuf 的向后兼容性。
关于spring-boot - 如何在 Spring Boot 中使用 grpc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55810926/