最基础的知识

生产者、消费者、代理

  • 生产者:消息的创建者,负责创建和推送数据到消息服务器
  • 消费者:消息的接收方,用户处理数据和确认消息
  • 代理:就是RabbitMQ本身,扮演“快递”的角色,本身不产生消息。

消息发送原理

应用不rabbit之间创建一个TCP连接,一旦tcp打开,并通过了认证(认证就是你试图连接Rabbit之前发送的Rabbit服务器的连接信息、用户名、密码);认证通过后,我们的应用会和Rabbit创建一条AMQP的信道(Channel)。
channel时创建在“真实”的tcp上的虚拟连接,AMQP命令都是通过信道发送出去的,每个channel的id唯一,不论是发布消息、订阅队列或者接受消息都是通过channel完成的。

对于操作系统来说创建和销毁TCP会话是非常昂贵的开销,假设高峰期每秒有成千上万条连接,每个连接都要创建一条TCP会话,这就造成了TCP连接的巨大浪费,而且操作系统每秒能创建的TCP也是有限的,因此很快就会遇到系统瓶颈。更多的channel介绍 【?扩展一下操作系统时怎么建立tcp的,以及tcp的上限时受到地层的哪些因素影响】

rabbit内部知识

有哪些重要的内部知识点

  • connectionFactory(连接管理器):应用程序与Rabbit之间建立连接的管理器
  • channel(信道):消息推送使用的通道
  • Exchange(交换器):用户接受,分配消息
  • Queue(队列):用户存储生产者的消息
  • RoutingKey(路由键):用户把生成者的数据分配到交换器上
  • BindingKey(绑定键):用于把交换器的消息绑定到队列上
    【?结合使用场景,把它们之间的关系完整化。比如发送与rabbitmq关系,消费与rabbitmq的关系】

消息持久化

首先rabbitMq的Exchange和Queue默认不会持久化【???我记得别的帖子上有见过,默认是放在内存中样子,需要仔细查阅相关资料】
持久化的几种方式:

  • 投递消息的时候durable设置为true,消息持久化。【??durable的相关知识】
  • 投递模式deliverMode设置(持久)【??投递模式有哪些】
  • 消息已经到达持久化的交换器上;【??交换器的类型】
  • 消息已经到达持久化的队列上;【??队列的类型】

消息持久化道硬盘上会降低服务器吞吐量

虚拟主机

mini版的RabbitMq,有自己的Exchange、Queue、绑定,拥有自己的权限。每个Rabbti能创建很多vhost
vhost特征

  • RabbitMQ默认的vhost是“/”,开箱即用
  • 不同vhost之间隔离的,之间无法通讯,不会冲突,实现了多层分离。【?分层原理是啥】
  • 创建用户的时候必须指定vhost

引用

RabbitMQ系列(二)深入了解RabbitMQ工作原理及简单使用

posted on 2021-07-31 16:50  丶亻  阅读(60)  评论(0)    收藏  举报