在 netty 通道上设置套接字超时

2023-12-26

我有一个 netty 通道,我想在底层套接字上设置超时(默认设置为 0 )。

超时的目的是,如果 15 分钟内没有发生任何事情,则未使用的通道将被关闭。

虽然我没有看到任何配置可以这样做,而且套接字本身也对我隐藏。

Thanks


如果使用ReadTimeoutHandler类,可以控制超时。

以下是引自Javadoc http://docs.jboss.org/netty/3.2/api/org/jboss/netty/handler/timeout/ReadTimeoutHandler.html.

public class MyPipelineFactory implements ChannelPipelineFactory {
    private final Timer timer;
    public MyPipelineFactory(Timer timer) {
        this.timer = timer;
    }

    public ChannelPipeline getPipeline() {
        // An example configuration that implements 30-second read timeout:
        return Channels.pipeline(
            new ReadTimeoutHandler(timer, 30), // timer must be shared.
            new MyHandler());
    }
}


ServerBootstrap bootstrap = ...;
Timer timer = new HashedWheelTimer();
...
bootstrap.setPipelineFactory(new MyPipelineFactory(timer));
...

当它将导致超时时,将调用 MyHandler.exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)读取超时异常.

@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
    if (e.getCause() instanceof ReadTimeoutException) {
        // NOP
    }
    ctx.getChannel().close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 netty 通道上设置套接字超时 的相关文章

  • Netty UDP 服务器引导程序

    我发现 Netty 4 0 的所有 TCP 服务器实现都使用 ServerBootstrap 实例 服务器和客户端之间最大也是唯一的区别 Netty的不同之处在于Bootstrap和Channel的实现是不同的 用过的 请看一下下面的代码
  • netty源码:(3) ThreadPerTaskExecutor

    这个类封装了一个ThreadFactory 同时提供了一个execute方法 用来把Runnable提交给ThreadFactory来执行
  • Netty 与 Apache MINA

    它们都提供大致相同的功能 我应该选择哪一款来开发我的高性能 TCP 服务器 有什么优点和缺点 参考链接 阿帕奇米娜 source Netty source 虽然 MINA 和 Netty 有着相似的目标 但它们在实践中却有很大不同 您应该仔
  • netty源码:(24)EventExecutorChooserFactory类

    该类定义了一个内部接口EventExecutorChooser 该接口有一个方法 next EventExecutorChooserFactory类有个默认实现类 DefaultEventExecutorChooserFactory 该类有
  • Java NIO 窗口实现

    在使用 NIO 2 AIO 功能进行项目时 我查看了 旧的 NIO 选择器实现 发现在 Windows 上使用了默认的选择函数 由于内部实现不良 该函数在 Windows 上根本无法扩展 大家都知道 在 Windows 上 IOCP 是唯一
  • Netty异步写入响应和大小未知的大数据

    我开发了一个netty http服务器 但是当我在方法ChannelInboundHandlerAdapter channelRead0中写入响应时 我的响应结果来自另一台服务器 并且结果的大小未知 因此它的http响应标头可能具有内容长度
  • Netty Channel.write 线程安全吗?

    我有一个 Netty 应用程序 我希望有多个线程写入通道 我只是想知道 Channel write 是否线程安全 从代码中可以看出 ChannelOutboundBuffer addMessage 方法本身不是线程安全的 然而 写入通道是
  • Netty:关闭通道时出现 ClosedChannelException

    为什么当我尝试关闭通道时 会抛出 ChannelClosedException 使用 Channel close 关闭 异常的堆栈跟踪 java nio channels ClosedChannelException at org jbos
  • 在处理程序中组装 Netty 消息

    我正在为我的项目制作 Netty 原型 我正在尝试在 Netty 之上实现一个简单的面向文本 字符串的协议 在我的管道中 我使用以下内容 public class TextProtocolPipelineFactory implements
  • Netty-无法访问类 jdk.internal.misc.Unsafe

    当我将 Java 从 8 升级到 11 时 我收到来自 Netty 的错误 jdk internal misc Unsafe 详细信息如下 我知道这是一条调试级别消息 我可以更改日志级别以忽略它 但我不确定当我忽略它时是否会出现其他问题 例
  • 何时在 keepalive 打开的情况下调用channelInactive?

    我有一个 SimpleChannelInboundHandler 处理一些 http 请求 CacheServerHandler extends SimpleChannelInboundHandler
  • 是增加工作线程的数量还是在 Netty 中创建自己的线程池更好?

    假设我们的 Netty 服务器 4 1 32 响应 HTTP 调用 我们进一步假设它必须在回答传入请求之前执行某些阻塞操作 例如 它必须执行传出调用 此处使用不同的库 来加载外部数据 NioEventLoopGroup 长连接线程数 htt
  • 无法加载库:[netty_tcnative_linux_arm_32、netty_tcnative_linux_arm_32_fedora、netty_tcnative_arm_32、netty_tcnative]

    我正在尝试在 raspberry pi modal 3 上使用 jar 运行 java 应用程序 我无法解决此问题 有人可以建议我如何在树莓派上进行这项工作吗 在 pom 中 我包含了 google cloud speech 依赖项 0 5
  • 如何知道Netty ByteBuf中是否没有数据可读取?

    我是 Netty 新手 文件传输的问题让我困惑了好几天 我想发送image文件从客户端到服务器 下面的代码是可执行的 但只有我shutdown服务器强制我可以正常打开收到的图像文件 否则 显示 您似乎没有查看此文件的权限 检查权限并重试 所
  • 为什么JDK NIO使用这么多anon_inode文件描述符?

    我正在使用 Sun 的 JDK 1 6 0 26 和 NIO 带有 Netty 在 lsof 中我看到数百个文件描述符anon inode lsof np 11225 fgrep w anon inode java 11225 nobody
  • 将无符号类型写入 Netty ChannelBuffer

    Netty 的 ChannelBuffer 类提供了从 ChannelBuffer 读取无符号类型的便捷方法 但是似乎没有任何等效的方法用于将无符号类型写入 ChannelBuffer 我觉得我一定错过了什么 推荐的方法是什么 例如将无符号
  • Java 互操作——Netty + Clojure

    我正在尝试通过 clojure 使用 netty 我可以启动服务器 但是它无法初始化接受的套接字 下面分别是错误消息和代码 有谁知道什么是 或可能是错误的 我相信问题在于 Channels pipeline server handler T
  • 为什么我们真的需要多个 Netty boss 线程?

    我真的很困惑老板组的线程数量 我无法弄清楚我们需要多个老板线程的场景 在Boss 组是否需要多个线程 https stackoverflow com questions 22280916 do we need more than a sin
  • 为什么我的 Camel Netty 路由会在 JMS 消息的开头添加换行符?

    我有一个 Camel Netty 路由 它将 XML 发送到服务器端口并将其放入 JMS 消息中 在第一条消息之后 所有其他消息的顶部都有一个换行符 导致当 GUI 收到它时 我的 XML 无法解组 我的路线是这样的
  • 使用 Netty 将 websocket 与在 tomcat 中运行的 Spring Web 应用程序集成

    我有一个使用 Netty 的 Web 套接字服务器实现 例如监听端口 8081 和一个在 Tomcat 中运行的单独的 Spring Web 应用程序 在端口 80 中运行 我想以某种方式将所有来自 localhost 80 Websock

随机推荐

  • Ivy,主配置是什么,为什么它不拉动jvyaml?

    我有以下常春藤文件
  • go 例程未从通道收集所有对象

    我有一个go routine将对象添加到通道中 然后我有 4 个go routines处理通道对象 处理只不过是将对象添加到数组中 但有时 最终数组中会丢失对象 所以我假设在某个时刻通道停止收集对象 我有以下代码 package main
  • SonarQube 抱怨:要么记录或重新抛出此异常

    在将代码与 Maven 集成后 我正在运行 SonarQube 5 进行代码质量检查 声纳抱怨我应该 记录或重新抛出此异常 在下面的代码中 public static Date convertStringtoDate String stri
  • 使用 Spring AOP 时,在单个连接点上绑定参数的多个 around 建议会导致错误

    我在一个方法上写了 2 个注释 并写了 2 个周围建议来处理每个注释值 连接点方法是这样的 CacheFetch cacheName CacheManager CACHE DATASOURCE INFO TenantAware method
  • 如何从 SQL 注入攻击中删除帖子中的脚本?

    我有一个插件 使我的 WordPress 网站容易受到 SQL 注入攻击 此后我锁定了我的网站并删除了所有 Wordpress 文件 然后重新安装了 Wordpress 该插件也已被删除 不幸的是 我现在所有 2503 个帖子都安装了以下示
  • 当输入列表为空时删除 JXLS 中的模板行

    我正在使用 JXLS 填充 Excel 电子表格模板 有时 一个输入 列表 是空的 发生这种情况时 使用此列表的模板字段将以完整的 JXLS 标志显示在填充的电子表格中 例如 someList someValue 有问题的字段都在一行中 扩
  • 角度 2 中的指令执行顺序

    如果我有一个带有单击处理程序和自定义属性指令的简单按钮 如下所示
  • 如何使用所需信息呈现表单字段

    有没有什么聪明的方法可以让 django 表单在所需字段后渲染带有星号的字段 或者提供一些其他聪明的方法来标记必填字段 如果我已经按照表单中的要求设置了字段 我不想在模板中再次执行此操作 从 Django 1 2 开始 如果您的表单有一个名
  • Xcode 链接器错误:对于架构 x86_64 文件太小

    我正在 Xcode 中开发一个应用程序 当我尝试构建时 出现此错误 ld in Users theodore Library Developer Xcode DerivedData Tower bkpdifuqssebjdgurzmtirb
  • 如何处理java中“死存储到局部变量”的错误?

    我写了一个简单的测试代码 这是一个圆圈 我想大多数人都能想象到什么是圆类 所以我就不贴了 在测试代 码中 我尝试使用无效点测试圆构造函数 并假设抛出异常 但出现了一个错误 上网查了一下 还是不知道如何解决 有人可以帮助我吗 谢谢 代码信息
  • 日期时间值不正确:“2012-07-14 23:00:00”

    我在使用 Python MySQL 处理日期时间格式时遇到一些问题 我使用以下脚本 由 Python 字典提供 计算日期时间 tempDate str eachday get date get year zfill 4 str eachda
  • #include 导致很多语法错误

    我的程序使用 Qt 和 OpenGL 它在 Linux 和 Mac 下都能正确编译 在Windows上编译时 我需要 include windows h才能使用OpenGL 代码如下 if defined WIN32 defined WIN
  • 不能需要全局 npm 模块

    我有以下问题 我安装 uuidnpm install g uuid 当我尝试运行以下代码时 var uuid require uuid console log uuid v1 抛出异常 module js 339 throw err Err
  • std::vector 和 C 风格数组

    我正在尝试OpenCL http www khronos org opencl 提高我们软件的速度 我们经常使用映射 为了简化 将映射表示为 std vector OpenCL API 采用原始 C 风格指针作为参数 例如上述情况中的 in
  • 如何设置PowerShell的默认目录?

    有没有办法更改 PowerShell 默认位置 如何设置PowerShell的默认工作目录 创建一个PowerShell 简介 https learn microsoft com en us powershell module micros
  • com.microsoft.sqlserver.jdbc.SQLServerException:MSI 令牌失败:无法从 MSI 端点获取令牌

    我想使用应用服务 API Java 和 MSI 托管服务身份 身份验证来访问 Azure SQL 数据库 我试图找出如何从适用于 Java 的 Azure 应用服务将 Azure sql 与 MSI 连接 这是我正在使用的连接字符串 jdb
  • 脚本脚本需要刷新页面才能运行吗?

    该脚本有助于在线商店的结帐过程 除了需要刷新页面以使程序最初运行之外 一切正常 我想知道这是否是缓存问题 因为它适用于以前查看过的其他产品 我也尝试修补 run at无济于事 我正在使用脚本式的扩展 它是一个独立的 js file User
  • 如何在 Node.js 中渲染 EJS 模板文件?

    我正在使用 Node js 并尝试呈现 EJS 模板文件 我弄清楚了如何渲染字符串 var http require http var ejs require ejs var server http createServer functio
  • 如何查看jOOQ执行的SQL语句?

    我使用 jOOQ 从表中查询 插入 更新数据 有没有办法查看JOOQ执行的SQL语句 查找您的日志配置文件 或创建一个 并设置该类的日志级别org jooq tools LoggerListener as debug or trace 例如
  • 在 netty 通道上设置套接字超时

    我有一个 netty 通道 我想在底层套接字上设置超时 默认设置为 0 超时的目的是 如果 15 分钟内没有发生任何事情 则未使用的通道将被关闭 虽然我没有看到任何配置可以这样做 而且套接字本身也对我隐藏 Thanks 如果使用ReadTi