我试图通过下面复制的调用获得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);
答案 0 :(得分:1)
更新:getState(true)
已于grpc-java v1.6.1(2017年8月31日)实施,但尚未完成。它后来在grpc-java v1.11.0(2018年3月30日)完成。
原始答案:
对于大多数ManagedChannel
来说,isn't currently implemented。该API是针对新的LoadBalancer
API引入的,但现在甚至LoadBalancer
都没有使用它。
我已经提交an issue来改进文档,直到实施完毕。
您对频道的行为的理解是正确的。它懒洋洋地连接,这是可以强制连接频道的API。不幸的是,它还没有实现,除了发布RPC之外别无选择。