获取 GRPC 的连接状态

getting connection state for GRPC

我正在尝试通过下面复制的调用获取 GRPC (Java API) 连接的连接状态。根据我在网上找到的注释,似乎 GRPC 客户端会在第一次服务调用时延迟连接到服务器,如果我想在服务调用之前建立连接,我可以使用此选项。但是,这个调用似乎总是阻止我的应用程序连接到服务器,我想知道我是否必须依赖不同的 call/mechanism.

GRPC 版本:1.1.2
JDK version:1.8

final ManagedChannelBuilder<?> channelBuilder = connection.getSecure();  //this forms a secure connection
channel = channelBuilder.build();
ConnectivityState connectivityState = channel.getState(true); //referenced in question above
asyncStub = MonetaGoConnectGrpc.newStub(channel);

更新:getState(true) 已于 grpc-java v1.6.1 (Aug 31, 2017), although it was incomplete. It was later completed in grpc-java v1.11.0(2018 年 3 月 30 日)实施。

原回答:

isn't currently implemented 大多数 ManagedChannel。 API 是为新的 LoadBalancer API 引入的,但现在甚至 LoadBalancer 都没有使用它。

我已提交 an issue 以改进文档,直到它被实施。

您对频道行为的理解是正确的。它延迟连接,这是可以强制连接通道的 API。不幸的是,它尚未实现,除了发布 RPC 之外别无选择。