我怎么知道GRPC连接是否丢失?

问题描述

我已经用Java实现了GRPC客户端。

String host:"192.893.12.11";
int port:9090; 

ManagedChannel managedChannel = ManagedChannelBuilder.forAddress(host,port).usePlaintext().build();

我想在grpc连接丢失时得到通知。如果GRPC连接已丢失,如何通知客户端?

解决方法

您可以使用ManagedChannel的notifyWhenStateChanged方法在频道状态更改时获取通知,例如要在服务器关闭时获取通知,您可以尝试以下代码:

// create a ManagedChannel 
ManagedChannel channel = ManagedChannelBuilder.forTarget(target)
        .usePlaintext()
        .build();

// add callback method
channel.notifyWhenStateChanged(ConnectivityState.SHUTDOWN,() -> System.out.println("server shutdown"));