【问题标题】:Netty: configure timeout for channel read per channelNetty:为每个通道配置通道读取超时
【发布时间】:2018-10-04 01:06:28
【问题描述】:

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

问题 - 我想在发送请求和接收特定通道的数据之间设置超时值。
我阅读了 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

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

【问题讨论】:

    标签: java netty


    【解决方案1】:

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

    【讨论】:

    • 只有一个说明 - setConnectTimeoutMillissets 以毫秒为单位设置通道的连接超时。现在这个通道包括连接、写入和读取的时间,这与 ChannelOption.CONNECT_TIMEOUT_MILLIS 不同。正确的?参考 - netty.io/4.0/api/io/netty/channel/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2016-09-05
    • 2014-07-14
    相关资源
    最近更新 更多