2017-04-07 44 views
0

我想通过下面复制的调用获取GRPC(Java API)连接的连接状态。基于我可以在网上找到的笔记,如果我想在服务调用之前建立连接,那么GRPC客户端似乎懒惰地连接到第一个服务调用&上的服务器,我可以使用此选项。然而,这个调用似乎总是阻止我的应用程序连接到服务器,我想知道是否必须依靠不同的调用/机制。获取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

不仅仅是说“不起作用”,还提供了实际的失败异常或行为。 –

+0

评论在那里表明我在指向 –

回答

1

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

我已经提交了an issue来改进文档,直到它被实现。

您对渠道行为的理解是正确的。它懒洋洋地连接,这是可以强制连接频道的API。不幸的是,它还没有实现,除了发布一个RPC之外没有别的选择。

+0

以上问题的代码片段中的内容感谢您的跟踪。在第一个RPC或其他一些干净的方式之前,能够查询连接状态是很理想的,以找出第一个RPC不起作用的原因(无论是RPC还是建立连接) –

+0

RPC的状态包括故障信息,独立于故障源。因此,如果无法建立连接,状态应该描述它以何种方式失败。 –