【发布时间】:2020-08-31 07:01:16
【问题描述】:
我已经用 Java 实现了 GRPC 客户端。
String host:"192.893.12.11";
int port:9090;
ManagedChannel managedChannel = ManagedChannelBuilder.forAddress(host, port).usePlaintext().build();
我想在 grpc 连接丢失时得到通知。 GRPC连接丢失如何通知客户端?
【问题讨论】:
-
刚刚浏览了
ManagedChannel的JavaDocs,似乎有一个ManagedChannel.notifyWhenStateChanged 方法 - 这可以满足您的需要吗? -
这个方法怎么用?有例子吗?
-
notifyWhenStateChanged可能会有所帮助。如Javadoc 中所述,它的用法应该相当简单。注意notifyWhenStateChanged只能检测通道状态变化。但是,通道状态不一定反映 TCP 连接的生命周期。即使网络连接在中间断开,TCP 套接字也可以保持打开(或由操作系统静默关闭)。所以 gRPC 只能知道连接断开了,套接字上的写入失败。 -
使用 RPC 的生命周期更准确。如果有帮助,您可以使用流式 RPC。只要 RPC 处于 TCP 连接状态,就可以持续存在。
标签: java connection grpc grpc-java