当前位置: 首页 > 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 模式,提升并发性能和连接扩展性
适用场景高并发、微服务、高密度连接、容器环境等
要求必须配合自定义线程池使用
http://www.lryc.cn/news/575255.html

相关文章:

  • 【评估指标】IoU 交并比
  • 工业“三体”联盟:ethernet ip主转profinet网关重塑设备新规则
  • 智哪儿专访 | Matter中国提速:开放标准如何破局智能家居“生态孤岛”?
  • Selenium 二次封装通用页面基类 BasePage —— Python 实践
  • GBDT:梯度提升决策树——集成学习中的预测利器
  • Git上传代码如何解决Merge冲突
  • 时序数据库 TDengine 助力华锐 D5 平台实现“三连降”:查询快了,机器少了,成本也低了
  • 【目标检测】平均精度(AP)与均值平均精度(mAP)计算详解
  • MicroPython网络编程:AP模式与STA模式详解
  • 大塘至浦北高速分布式光伏项目,让‘交通走廊’变身‘绿色能源带’
  • 深度学习入门--(二)感知机
  • python的kivy框架界面布局方法详解
  • react中使用3D折线图跟3D曲面图
  • Vue Devtools “Open in Editor” 配置教程(适用于 VSCode 等主流编辑器)
  • 大语言模型(LLM)初探:核心概念与应用场景
  • 【MongoDB】MongoDB从零开始详细教程 核心概念与原理 环境搭建 基础操作
  • DeepSeek模型接入LangChain流程(详细教程)
  • 永磁同步电机无速度算法--基于同步旋转坐标系锁相环的滑模观测器
  • PYTHON从入门到实践6-字典
  • MCP2518FD发送时有时候多发数据包问题
  • 【预告 大模型应用开发实战专栏 升级】将增加《大模型 Agent 应用实战指南》专题赋能 Agent 开发者
  • OpenGL模板缓冲:实现亮显外轮廓效果
  • C# LINQ语法
  • Python 爬虫入门:从数据爬取到转存 MySQL 数据库
  • Cookie 在 HTTP 中的作用HTTP 中的状态码
  • 北斗导航 | 基于改进奇偶矢量法的CAT I精密进近RAIM算法
  • 半导体芯闻--20250625
  • Linux离线安装jdk-11
  • AudioTrack使用
  • Kylin Linux Advanced Server V10 离线安装 Prometheus + Grafana + node_exporter指南