双向流Java客户端

时间:2020-03-18 16:00:03

标签: java streaming grpc-java

我正在为SSL套接字上的双向流创建Java库(无法重新使用gRPC / HTTP2流客户端)。

我最初的想法是创建3个组件:

  1. StreamingConnection。
  2. StreamReader(在输入流上观察)。
  3. StreamWriter(写入输出流)。
  4. StreamingClient

调用方与StreamingClient进行交互,StreamingClient调用StreamingConnection.connect()创建套接字连接,并将输入流作为构造函数参数传递给StreamReader和outputStream StreamWriter。

但是事实证明,阅读器需要根据传入消息在输出流上写入消息。另外,基于服务器的服务器可能会发送客户端应连接到的新主机详细信息,在这种情况下,我们将进行清理并再次开始流式传输。

我正在尝试可视化这些组件之间进行通信的最佳方式是什么?通过事件,调解员或我应该探索的任何其他模式?

是否有gRPC双向流的见解或类直径?

1 个答案:

答案 0 :(得分:1)

我认为您不需要实现自己的StreamWriter(这是异步存根在调用流式RPC时返回的内容),除非您希望将其与另一层逻辑包装在一起。大多数情况下,实现将所有StreamingConnection,StreamReader和StreamWriter封装在StreamingClient类中。它们中的每一个在实现方面都不复杂(StreamingConnection建立一个通道并创建一个存根,用于进行RPC调用; StreamReader是实现StreamObserver的响应处理程序; StreamWriter是gRPC库为您提供的发送内容邮件发送到服务器)。将它们放在同一个类(例如内部类,甚至是匿名类)中,可以使它们彼此交互。