请帮帮我我是GRPC的初学者当我使用grpc-java时,写一个演示,发现当我启动一个双向流RPC时,服务器端!使用客户端访问你主机中的软件中止已建立的连接,但我在服务器端使用它server.awaitTermination();
11:41:49 io.grpc.netty.NettyServerTransport notifyTerminated :传输失败
发布于 2017-10-20 01:40:58
完成连接后,您需要在客户端调用ManagedChannel.shutdown()。这会启动有序关机,从而防止服务器认为连接突然结束。您可以调用ManagedChannel.awaitTermination()以确保它已正确关闭。
如果您不关心现有的RPC,也可以调用shutdownNow,它会强制终止所有RPC。
发布于 2021-03-22 23:48:17
我从YRRHelp做了一个关于这个YouTube Playlist的教程(从网址末尾删除%5D )。在视频6/6中,我遇到了这个错误。
因为我已经将ManagedChannel声明为channel,所以可以使用channel.shutdown();。
下面是我的例子:
package grpcClient;
import com.yrrhelp.grpc.userGrpc;
import com.yrrhelp.grpc.User.APIResponse;
import com.yrrhelp.grpc.User.LoginRequest;
import com.yrrhelp.grpc.userGrpc.userBlockingStub;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
public class GrpcClient {
public static void main(String[] args) {
// forAddress(name, port)
ManagedChannel channel =
ManagedChannelBuilder.forAddress("localhost", 9090)
.usePlaintext()
.build();
// stubs to call API - generate from proto files
// newBlockingStub = will wait for response
// newStub = will not wait for response
userBlockingStub userStub = userGrpc.newBlockingStub(channel);
LoginRequest loginRequest =
LoginRequest.newBuilder()
.setUsername("RAM")
.setPassword("RAM")
.build();
APIResponse response = userStub.login(loginRequest);
System.out.println(response.getResponsemessage());
channel.shutdown();
}
}https://stackoverflow.com/questions/46802521
复制相似问题