java - GRPC 连接状态监听器 Java

标签 java grpc grpc-java

我很感兴趣——我可以收到一些关于 GRPC 客户端/服务器的连接/断开事件的通知吗? 现在,当客户端终止与服务器的连接时,我在服务器上遇到异常:

июн 22, 2018 9:34:47 AM io.grpc.netty.NettyServerTransport notifyTerminated
INFO: Transport failed
java.io.IOException: Удаленный хост принудительно разорвал существующее подключение
    at sun.nio.ch.SocketDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
    at sun.nio.ch.IOUtil.read(IOUtil.java:192)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
    at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:288)
    at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1108)
    at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:345)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:745)

异常翻译:“远程主机强行中断现有连接”

我很感兴趣,我如何管理客户端和服务器的连接/断开事件?

也许有一些方法可以将我自己的监听器附加到客户端或服务器?从消息来源我不知道如何制作它

最佳答案

gRPC 有意不提供连接级通知。您没有提及您的用例,但绝大多数用例都被负载平衡、代理和 gRPC 的重新连接逻辑破坏了。

有一种方法可以通过 ManagedChannel.getState(false) 确定 channel 是否健康,这对于为用户提供 UI 或告诉其他客户端服务器不健康很有用.其他用例应构建在单独的 RPC 上。

关于java - GRPC 连接状态监听器 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50970812/

相关文章:

error-handling - 有人可以向我解释gRPC StreamObserver.onError的正确用法是什么?

java.lang.IndexOutOfBoundsException - 使用 Protocol buffer 构建 Java 对象时

java.lang.NoSuchMethodError : com. google.common.base.Preconditions.checkArgument

java - 将 0xFF 写入文件时出现问题

java - 当定义的对象已存在于 map 中时,从我的 map 获取 null 返回值?

java - 使用 google texttospeech : Could not find TLS ALPN provider; no working netty-tcnative, Conscrypt 时出错,或 Jetty NPN/ALPN 可用

go - gRPC 私有(private) channel

java - 在 Eclipse 中启用断言检查的通用设置

java - 如何使用Android Studio实现自动建议UI?

ssl - 如何在没有服务器证书的情况下配置通过 TLS 传输层通信的 gRPC 客户端?