【发布时间】:2020-01-31 01:19:51
【问题描述】:
我正在尝试编写同时使用 gRPC 和 REST 的服务。实现技术有 Java、Spring Boot 和 gRPC。使用场景示例如下:
目的是有外部客户端可以通过 REST 端点和/或通过 gRPC 调用与应用程序交互。在内部,有“网关”服务提供外部接口并负责在外部客户端和“域”服务之间传输/路由请求和响应,这些服务执行实际工作。内部服务将通过 gRPC 进行通信。
外部客户端不知道内部如何处理事情,域服务没有外部接口。
我已经能够获得一个基本的请求/响应模式以端到端地工作,但我不确定如何实现涉及流式传输的模式(在任一方向上)。实际上,这并不完全正确 - 我已经能够让 gRPC 站点 (https://grpc.io/) 上提供的基本示例正常工作。
这是我正在尝试做的一个例子,我似乎无法弄清楚如何工作:
“域”服务能够将对象集合(即流源)返回给请求者。域使用 gRPC 逻辑将这些对象提供给调用客户端(在本例中为“网关”)。外部客户端对网关服务进行 REST 调用,以请求域服务提供的对象集合。
据我所知,域和网关之间的通信很好,但是当它尝试将信息发送回外部客户端时出现问题。具体代码和我遇到的错误请看相关issueProblem returning stream of responses from gRPC service to RESTful client。
想到的一个问题是:REST 能否用于处理信息流(在任一方向)?如果不能,我有什么选择(如果有的话)?如果可以,我该怎么做?
更新:
我已对上面引用的同伴 SO 发布进行了更新。
【问题讨论】:
-
也许你会在这里找到一些提示 [baeldung.com/spring-rest-api-with-protocol-buffers],有一个来自 com.google.protobuf.protobuf-java 的 ProtobufHttpMessageConverter
-
@Marc 是的,我看到了 Baeldung 的文章并且能够应用他的一些技术。当我有一个简单的请求/响应时它可以工作,但我在尝试使用 gRPC“流”概念从服务器流回响应集合时遇到问题。
-
@Joseph 你有解决办法吗?
标签: java rest spring-boot grpc-java