java - GRPC ConnectivityState 不能正常工作?
问题描述
ManagedChannel managedChannel = ManagedChannelBuilder
.forAddress("localhost", 9090)
.usePlaintext().build();
System.out.println("State: " + managedChannel .getState(false)) // State: IDLE
Grpc.Stub stub = Grpc.newStub(managedChannel);
System.out.println("State: " + managedChannel .getState(false)) // State: IDLE
stub.callMethod();
System.out.println("State: " + managedChannel .getState(false)) // State: IDLE
上面的代码是 GRPC 客户端。它与 grpc 服务器建立连接。但是每次通道状态都是IDLE?何时处于 CONNECTING 和 READY 状态?怎么了?
解决方案
需要等待另一个状态。以下代码connection state: TRANSIENT_FAILURE
在服务器未启动且connection state: READY
处于健康状态时打印。gRPC 版本:1.24.0
ManagedChannel managedChannel = ManagedChannelBuilder
.forAddress("localhost", 9090)
.usePlaintext().build();
ConnectivityState state = channel.getState(true);
while (state == ConnectivityState.IDLE || state == ConnectivityState.CONNECTING) {
state = channel.getState(true);
}
System.out.println("connection state: " + state.toString());
推荐阅读
- python - How do I check a data exist or not in text file using python?
- c - 尝试在第二个 2d char 数组中检查一个 2d char 数组中的关键字
- system-verilog - systemverilog comparing two ways to wait signal; 1) @( clock iff condition), 2) while( ! condition) @(clock);
- 3d - WebGL Earth map in 2D rather than 3D?
- javascript - 传单帆布图书馆
- python-3.x - Pandas: I want to multiply two columns with 19 million rows, but system runs out of memory (Memory Error)
- prometheus - 如何在promql中的count_values之后过滤标签名称
- javascript - 在 AWS S3 SDK 中上传文件
- excel - 在不打开工作簿的情况下检查工作表密码是否受到保护
- blogger - 一些 Blogger 标签页面仅显示 4 篇文章,即使 20 篇文章具有该标签