我正在使用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/