消息队列rabbitmq笔记

生产者-----------》exchange----queue------------------》接收者

交换器和队列基于routingKey路由键绑定在一起。

发送消息:只需要指定交换器、路由键

交换器再根据路由键来决定,将消息发送到哪些队列

路由键,将交换器和队列绑定在一起。如果消息拥有的路由键,跟交换器和队列的路由键匹配,

那么消息就会被路由到该绑定的队列中。

channel信道,是TCP里面的虚拟链接?。一条TCP连接上可以创建多条信道?。

rabbitmq为什么需要信道?而不是TCP直接通信?

1、TCP的创建和销毁开销特别大,创建需要3次握手,销毁需要4次分手。高并发时,会产生过多TCP链接数

2、信道的原理是一条线程一条通道,多条线程多条通道共用一条TCP链接。一条TCP链接可以容纳无限的信道???

疑问:这是在TCP连接中开线程吗?一个TCP连接,处理多个线程任务?不懂,还是rabbitmq只是用了连接池,信道只是到池中获取空闲的连接。连接池也是减少了TCP建立连接、销毁连接的次数

共用TCP链接的肯定是同一个客户程序,可以看看数据库连接池是怎么做的,那是只有两个服务之间的直接的通信,

看看连接池怎么优化连接,减少开销的。

连接池:好像是一直保持若干个连接不断开,每次连接时,到这个池中去拿空闲连接,这样就不用过多建立TCP连接

网络通信NIO:好像使用了线程池,每次IO都需要一个线程来处理。传统IO是每次IO都要新建一个线程来处理,

而NIO是从线程池中拿空闲的线程来处理IO,这样线程就可以复用,减小了新建、结束线程的开销。

两个池的概念区别:

线程池在上层、连接池在底层,

连接池关注的是数据怎么到达程序端口。

线程池关注的是怎么处理这些到达的数据。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 16,004评论 2 11
  • 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时...
    预流阅读 585,438评论 51 786
  • Java知识点1、==和equals的区别基本类型比较==比较内容 equals比较地址值引用类型比较==比较地址...
    压抑的内心阅读 606评论 0 0
  • 一、什么是RabbitMQ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信...
    匆匆岁月阅读 1,046评论 0 7
  • 1.十点半取蛋糕。十一点一家人去饭店给老爷子过生日。老爷子还是大脾气,嘴不饶人。 2.我们乔迁新居,姑姑给了个大红...
    呵呵一笑最倾城阅读 206评论 0 0