java - Netty:配置每个 channel 的 channel 读取超时

标签 java netty

我正在使用Netty框架并实现客户端和服务器。我正在建立高达 1000 个的连接。我想在多个位置配置超时值。其中一些我能弄清楚。所以,这是我的 netty 实现的 netty 行为:
1. 许多异步连接从客户端启动并超时(使用 ChannelOption.CONNECT_TIMEOUT_MILLIS 配置)。
2. 能够连接的客户端连接使用channelActive发送HTTP请求并使用channelRead0接收响应。

问题 - 我想在发送请求和接收特定 channel 的数据之间设置超时值。
我阅读了netty文档并提出了两个解决方案:
1.https://netty.io/4.0/api/io/netty/channel/ChannelConfig.html#setConnectTimeoutMillis-int-
2.https://netty.io/4.0/api/io/netty/handler/timeout/ReadTimeoutHandler.html

我很困惑该选择哪个选项,哪个更好,或者还有其他选项。

最佳答案

您将需要设置多个限制(很可能)。正如您已经发现的,您可能想通过 setConnectTimeoutMillis 设置连接超时但也有一个ChannelDuplexHandler这将确保您在预期时间内收到请求的响应。您可能还想看看IdleStateHandler这将允许通过 ChannelPipeline 触发事件如果Channel闲置时间过长。

关于java - Netty:配置每个 channel 的 channel 读取超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49990349/

相关文章:

Java Websockets - 被不同的选项搞糊涂了

java - 如何使用 Gradle 生成可执行的 .sh 文件?

Java 对 Guava TreeBasedTable 进行排序

java - 了解 netty channel 缓冲区和水印

ssl - Netty SSL 主机名验证支持

java - 即使网络连接断开,TCP 套接字在发送消息时也不会引发任何异常

java - 服务器突然停止

java - 从其他属性文件中替换 application.properties 的值

java - Vaadin - Tomcat 上的可序列化错误

java - netty 文件传输客户端