2

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

GRPC 版本:1.1.2
JDK 版本: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);
4

1 回答 1

2

更新:getState(true)grpc-java v1.6.1(2017 年 8 月 31 日)中实现,尽管它不完整。后来在grpc-java v1.11.0(2018 年 3 月 30 日)中完成。

原答案:

目前大多数ManagedChannels都没有实现它。该 API 是为新LoadBalancerAPI 引入的,但现在甚至LoadBalancer没有使用它。

我已经提交了一个问题来改进文档,直到它被实施。

您对 Channel 行为的理解是正确的。它延迟连接,这是可以强制连接 Channel 的 API。不幸的是,它还没有实现,除了发出 RPC 之外别无选择。

于 2017-04-08T20:05:03.213 回答