当前位置: 首页 > news >正文

RabbitMq中启用NIO

✅ 所属类

com.rabbitmq.client.ConnectionFactory

🧠 使用背景

RabbitMQ Java 客户端默认使用传统的 阻塞 I/O (java.net.Socket) 实现。如果你希望:

  • 更好地控制 线程数
  • 获得更好的 并发性能
  • 降低 每个连接的线程占用
  • 在高并发连接或消费者数量较多的系统中提升扩展性

那么可以使用:

factory.useNio();

这会切换到底层的 Netty-like 异步 NIO 通信方式。


✅ 基本用法示例

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.useNio(); // 启用 NIO 模式ExecutorService executor = Executors.newFixedThreadPool(4);
Connection connection = factory.newConnection(executor);

🔍 工作机制对比

模式模型特点
默认(阻塞 IO)每个连接或信道对应 1+ 个线程简单直观,但线程资源消耗大
NIO 模式多连接共享 I/O selector更少线程,支持更多连接,更适合高并发

🚨 注意事项

注意点描述
必须与自定义线程池搭配使用启用 NIO 后必须通过 newConnection(executor) 传入线程池
更复杂的调试异步通信更难调试,日志和堆栈信息更间接
不兼容旧版客户端useNio() 在 RabbitMQ Java 客户端 5.x 以上版本才支持

📦 示例封装

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(5672);
factory.useNio();ExecutorService executor = Executors.newCachedThreadPool();
Connection connection = factory.newConnection(executor);

✅ 总结

项目说明
方法factory.useNio()
作用启用非阻塞 I/O 模式,提升并发性能和连接扩展性
适用场景高并发、微服务、高密度连接、容器环境等
要求必须配合自定义线程池使用

相关文章:

  • 南京做网站的有哪些b站推广在哪里
  • 餐饮连锁企业网站建设方案百度查重免费入口
  • 绍兴网站建设服务天津百度网站快速优化
  • 个人免费网站注册单页面seo搜索引擎优化
  • 一个空间做两个网站的视频教程巩义网站推广优化
  • java做网站开发成本高怎样查询百度收录和排名情况
  • 操作系统学习笔记 | 第一章 计算机系统概述
  • “ICU”归来的小鹏,如何抗衡小米YU7?
  • EJB知识
  • NCCN Guidelines Navigator:数智化工具引领肿瘤精准治疗新纪元
  • linux安装docker
  • 国内优秀wordpress主题推荐
  • 量学云讲堂2025朱永海慢牛开启第58期视频课程
  • 设计模式 | 工厂模式
  • 大模型推理-高通qnn基础
  • SpringMVC系列(三)(请求处理的十个实验(上))
  • MySQL常用函数性能优化及索引影响分析
  • PAC 学习框架:机器学习的可靠性工程
  • AI Agent模型:Plan-and-Execute、ReAct、Function Calling
  • leetcode-2138.将字符串划分为若干个长度为k的组
  • 数据库系统总结
  • 鸿蒙工具类---设置全屏效果(上下安全区背景可设置)
  • 常用的串口通信工具MobaXterm、Bus Hound、SScom等
  • GNSS位移监测站的应用场景
  • 轻巧灵动,智启未来 ——Kinova Gen3 Lite 机器人轻松解锁各行业自动化新姿势
  • 云原生灰度方案对比:服务网格灰度(Istio ) 与 K8s Ingress 灰度(Nginx Ingress )