大家都知道,在使用rabbitmq时不管是消费还是生产都需要创建信道(channel) 和connection(连接),如下图producer示例。我们完全可以直接使用Connection就能完成信道的工作,为什么还要引入信道呢,试想这样一个场景,一个应用有多个线程需要从rabbitmq中消费,或是生产消息,那么必然会建立很多个connection ,也就是多个tcp连接,对操作系统而言,建立和销毁tcp连接是很昂贵的开销,如果遇到使用高峰,性能瓶颈也随之显现,rabbitmq采用类似nio的做法,连接tcp连接复用,不仅可以减少性能开销,同时也便于管理。

每个线程都把持一个信道,所以信道复用了TCP连接。同时rabbitmq可以确保每个线程的私密性,就像拥有独立的连接一样。当每个信道的流量不是很大时,复用单一的connection可以再产生性能瓶颈的情况下有效地节省tcp连接资源,但是当信道本身的流量很大时,这时候多个信道复用一个connection就会产生性能瓶颈,进而是整体的流量被限制了。此时就需要开辟多个connection,将这些信道均摊到这些connection中,至于这些相关调优策略需要根据业务自身的实际情况进行调节。

RabbitMQ—为什么使用信道channel相关推荐

  1. SpringCloudStream——RabbitMQ 手动ACK,Channel 参数为空?

    问题描述 使用SpringCloudStream 集成RabbitMQ的过程中,一直无法使用手动ACK功能. SpringCloud版本:Hoxton.RELEASE SpringBoot 版本:2. ...

  2. RabbitMq 测试报错channel error(reply-code=405

    今天在学习rabbitmq 消息队列的时候启动 生成者后 在启动消费者 会报错错误信息为 channel error; protocol method: #method<channel.clos ...

  3. 无线网络wifi的一些概念、信道channel,带宽,有线和无线网络的区别、DBDC双频双发、RSDB(双频合一)、MESH组网

    一.无线网络的一些基本概念 1.有线和无线网络的区别 目前有线网络中最著名的是以太网(Ethenet),但是无线网络WLAN是一个很有前景的发展领域,虽然可能不会完全取代以太网,但是它正拥有越来越多的 ...

  4. RabbitMQ-直连模型

    AMQP的架构模型 其中虚拟主机的意思类似于数据库中库的概念,设计者更希望,每一个项目独立使用一个虚拟主机. 入门案例 引入依赖 <dependency><groupId>co ...

  5. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器

    本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...

  6. Go 学习笔记(57)— Go 第三方库之 amqp (RabbitMQ 生产者、消费者整个流程)

    1. 安装 rabbitmq 的 golang 包 golang 可使用库 github.com/streadway/amqp 操作 rabbitmq .使用下面命令安装 RabbitMQ . go ...

  7. RabbitMQ 入门系列(3)— 生产者消费者 Python 代码实现

    生产者消费者代码示例 上一章节中对消息通信概念做了详细的说明,本章节我们对 RabbitMQ 生产者和消费者代码分别做一示例说明. 1. 生产者代码 #!/usr/bin/env python # c ...

  8. RabbitMQ 实战(四)消费者 ack 以及 生产者 confirms

    2019独角兽企业重金招聘Python工程师标准>>> 这篇文章主要讲 RabbitMQ 中 消费者 ack 以及 生产者 confirms. 如上图,生产者把消息发送到 Rabbi ...

  9. 消息队列之 RabbitMQ

    消息队列之 RabbitMQ 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时候把这块的知识整理记录一下了. 市面上的消息队列产品有很 ...

最新文章

  1. 零起点学算法24——求正弦和余弦
  2. php环境搭建 warmp_PHP环境搭建
  3. 监控、链路追踪、日志这三者有何区别?
  4. clockdiff-检测两台linux主机的时间差
  5. 博睿数据与阿里云签订云原生核心合作伙伴计划,推动企业智能运维落地
  6. OpenCASCADE绘制测试线束:数据交换命令之XDE 形状命令
  7. 【算法】字符串近似搜索(转)
  8. I/O多路复用之epoll
  9. FCPX Full Access - Titles Bundle for Mac FCPX标题字幕插件捆绑包
  10. OllyDbg笔记-暴力破解简单判断程序(TraceMe.exe与简单Qt程序)
  11. ARM和X86功耗差别的深层原因探讨
  12. phpcmsV9 QQ互联 相关文件配置成功 - 总结篇
  13. maven javaProject打包发布成服务
  14. spring yml 配置事务_application.yml与bootstrap.yml的区别
  15. 动态规划-最少硬币问题
  16. Vc数据库编程基础1
  17. shared_ptr的简单实现
  18. HTML入门标签汇总
  19. 【高效程序员系列】1、好马配好鞍——舒适的工作环境
  20. 网上开店,网店系统选择的那些事

热门文章

  1. yocto-sumo源码解析(十一): recvfds
  2. 6. H.264/AVC编码器原理
  3. php定时删除文件夹下文件(清理缓存文件)
  4. 升级jquery-easyui1.4.5后treegrid无法显示
  5. PHP5.1时间相差8小时问题解决。
  6. ORACLE安装请注意事项
  7. 关于报表在移动端展现需你需要知道哪些?
  8. 【51nod】1239 欧拉函数之和 杜教筛
  9. JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】...
  10. 通过getSystemServices获取手机管理大全