2017-04-07 1404 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的狀態包括故障信息,獨立於故障源。因此,如果無法建立連接,狀態應該描述它以何種方式失敗。 –