RabbitMQ知识总结(基本概念)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

基本概念

在这里插入图片描述

Producer:

消息的生产者,是一个向交换机发布消息的客户端应用程序。

Connection:

生产者/消费者和 RabbitMQ 服务器之间建立的 TCP 连接。

Channel:

TCP 里面的虚拟连接。

  • Connection 相当于电缆,Channel 相当于独立光纤束,一条 TCP 连接中可以创建多条信道,增加连接效率。
  • 无论是发布消息、接收消息、订阅队列都是通过信道完成的。

为什么使用信道而不直接使用 TCP 连接通信?

  • TCP 连接的创建和销毁开销特别大,创建需要 3 次握手,销毁需要 4 次挥手。
  • 高峰时每秒成千上万条 TCP 连接的创建会造成资源巨大的浪费。
  • 而且操作系统每秒处理 TCP 连接数也是有限制的,会造成性能瓶颈。
  • 而如果一条线程使用一条信道,一条 TCP 链接可以容纳无限的信道,即使每秒成千上万的请求也不会成为性能的瓶颈。

Broker:

消息队列服务器实体,即 RabbitMQ 服务器。

Virtual Host:

虚拟主机,每个 Virtual Host 本质上就是一个 mini 版的 RabbitMQ 服务器,拥有自己的队列、交换机、绑定和权限机制。

当多个不同的用户使用同一个 RabbitMQ 服务器时,可以划分出多个虚拟主机。

  • RabbitMQ 默认的虚拟主机路径是 /

Exchange:

交换机,用来接收生产者发送的消息,并根据分发规则,将这些消息分发给服务器中的队列中。

不同的交换机有不同的分发规则

交换机类型有4种:

  • direct(直连):

    • 它会把消息路由到那些 BindingKey RoutingKey完全匹配的队列中。
  • fanout(扇形):

    • 它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。
  • topic(主题):

    • 将消息路由到 BindingKey RoutingKey 相匹配的队列中。
  • headers(标题):

    • 交换器不依赖于路由键的匹配规则来路由消息,而是根据发送的消息内容中 headers 属性进行匹配。

直连交换机(dirext exchange)为 RabbitMQ 默认的交换机。

Queue:

消息队列,用来保存消息直到发送给消费者。

它是消息的容器,也是消息的终点,消息一直在队列里面,等待消费者链接到这个队列将其取走。

Binding:

消息队列和交换机之间的虚拟连接,绑定中包含路由规则,绑定信息保存到交换机的路由表中,作为消息的分发依据。

Consumer:

消息的消费者,表示一个从消息队列中取得消息的客户端应用程序。

死信队列

在这里插入图片描述

当消息在队列中由于某些原因没有被及时消费而变成死信(Dead Message)后,消息中间件可以将其从当前队列发送到另一个队列中,这个队列就是死信队列。

在 RabbitMQ 中,由于有交换机的概念,实际是将死信发送给了死信交换机(Dead Letter Exchange,简称DLX)。

死信交换机 和 死信队列与普通的没有区别。

  • 死信队列只是一种特殊的队列,里面的消息仍然可以消费。

消息成为死信的情况:

  • 队列消息长度到达限制

  • 消费者拒签消息,并且不把消息重新放入原队列

  • 消息到达存活时间未被消费

延迟队列

延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。

但 RabbitMQ 中并未提供延迟队列功能,可以使用死信队列实现延迟队列的效果。

  • 延迟队列:TTL + 死信队列的合体。
  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RabbitMQ是一种消息队列(MQ)系统,它具有多个相关概念和模式。其中一些重要的知识点包括: 1. RabbitMQ的四大概念:生产者、消费者、交换机和队列,它们一起构成了消息传递的基本组成部分。 2. RabbitMQ的六种模式:简单模式、工作模式、轮询分发、消息应答、自动应答和手动应答。 3. RabbitMQ持久化消息:可以将消息持久化到磁盘上,以防止消息在RabbitMQ发生故障时丢失。 4. 死信队列:当消息因某些原因无法被消费时,可以将其发送到死信队列中进行处理。 5. 延迟队列:可以设置消息的延迟时间,使其在一定时间后被消费。 6. 发布确认:可以通过发布确认机制来确保消息被成功发送到RabbitMQ。 7. RabbitMQ集群:可以通过搭建集群来实现高可用性和负载均衡。 8. 幂等性:消息的幂等性指的是多次处理同一消息不会产生副作用。 9. 优先级队列:可以为消息设置优先级,以确保高优先级的消息能够更快地被消费。 10. 惰性队列:惰性队列指的是只有在需要时才会被创建。 这些是RabbitMQ的一些重要知识点,它们可以帮助我们更好地理解和应用RabbitMQ。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [RabbitMQ 知识总结](https://blog.csdn.net/PaperJack/article/details/124734987)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [RabbitMQ知识点](https://blog.csdn.net/weixin_42100694/article/details/113514641)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值