gRPC是一个不错的选择,并且可以从客户端正常终止

时间:2018-08-27 11:22:11

标签: java streaming grpc

我们正在尝试创建一种用于订阅事件的服务,并且已经研究了解决该问题的各种技术。 从表面上看,gRPC似乎可以满足我们的需求,但是我们偶然遇到了一些挑战。

我的想法是,我们可以让客户端选择订阅(ID等),然后通过服务器流调用gRPC服务操作。此操作将创建订阅,开始轮询事件源,然后开始(无限期地)将事件推回客户端。

当我们要关闭客户端或更改订阅时,会出现问题。我还没有找到合适的方法来正常停止来自服务器的推送。是否存在?当从服务器推送的消息数量未知/不确定时,gRPC并不是最好的技术吗?是否还有其他具有相同性能的技术能够更好地满足我们的需求?

非常感谢!

1 个答案:

答案 0 :(得分:0)

gRPC可以很好地适合您的情况。

客户端可以使用半关闭来通知服务器该客户端即将消失。客户端将最初发送请求,而不会半关闭流。将在关闭流时将其关闭一半。当服务器收到半关闭时,它可能会停止发送并关闭流。客户端将等待流完全关闭再终止。

要确保客户端收到服务器发送的每个事件,您可能希望客户端定期向服务器确认消息。