当前位置: 首页 > 知识库问答 >
问题:

如何在 Netty 4 中删除拥塞的连接

宋臻
2023-03-14

使用Netty 4,我如何检测到我写的数据在我这边的连接中被阻塞,如果远端跟不上,我如何关闭连接?

我在检查

频道句柄上下文.channel.outboundByteBuffer.readableBytes

但是在最新的Netty 4版本中,这给了我一个例外:

java.lang.IllegalStateException:从eventLoop外部调用nextOutboundByteBuffer()

共有1个答案

薄伟彦
2023-03-14

您需要从EventLoop执行此操作,否则它不是线程安全的。

大概是这样的:

ChannelHandlerContext ctx = ....
final Channel channel = ctx.channel();
channel.eventLoop().execute(new Runnable() {
    public void run() {
        if (channel.outboundByteBuffer.readableBytes() > MaxWriteBuffer) {
            // do something
        }
    }
});
 类似资料:
  • 注意:用户界面已经在 Dreamweaver CC 和更高版本中做了简化。因此,您可能在 Dreamweaver CC 和更高版本中找不到本文中描述的一些选项。有关详细信息,请参阅此文章。 使用“删除连接脚本”命令 可以使用“删除连接脚本”命令删除 Dreamweaver 在远程文件夹中放置的用于访问数据库的脚本。只有在 Dreamweaver 中进行设计时创作时才需要使用这些脚本。 在“数据库连

  • 我正在使用jsplumb,但是我无法删除两个只有一个div的id的div之间的连接。

  • 问题内容: 我写了一个小程序,可以在特定端口上与服务器交互。该程序可以正常运行,但是: 一旦程序意外终止,并且此套接字连接一直处于状态显示。如果我尝试运行程序,它将挂起,并且必须强制将其关闭,这会累积 更多的 套接字连接。 有没有一种方法可以清除这些连接? 问题答案: 表示您的程序仍在运行,并且尚未关闭套接字(内核正在等待它关闭)。添加到以获取该pid,然后更加有力地将其杀死(如果需要,可以将其删

  • 问题内容: 我想使用SQLAlchemy删除表。 由于我要一遍又一遍地进行测试,因此我想删除该表,以便每次都可以从头开始。 到目前为止,我正在使用SQLAlchemy通过engine.execute()方法执行原始SQL : 但是,我想知道是否有一些标准方法可以做到这一点。我能找到的唯一一个是,但是它删除了所有结构,而不仅删除了一个特定的表: 例如,给出这个非常基本的例子。它由一个带有单个表的SQ

  • 给定使用以下方式创建的表: 如何删除列?

  • 假设我有两个数据帧。 DF1:col1,col2,col3, DF2:col2,col4,col5 如何水平连接这两个数据帧,并使用col1、col2、col3、col4和col5?现在,我在做pd。concat([DF1,DF2],axis=1),但它最终有两个col2。假设两个col2中的所有值都相同,我只希望有一列。