RabbitMQ知识点总结

1、 常用端口: 5672 用于常规连接  5671用于TLS连接

2、队列

   (1)队列的长度是有限的,队列和消息由TTL(Time To Live   存活时间).这两个功能可以用于数据过期,并且可以设置队列最多可以使用多少资源。 这个功能可以设置消息的延迟加载(下面详细介绍)。

   (2)消息订阅: 队列是有序的消息集合,消息以FIFO方式进出队列(先进先出)

   (3)持久性: 声明队列的时候,第二个参数可以设置队列的持久性,如果为true则会将队列持久化到磁盘中,否则不持久化

                          队列的持久化并不使其中消息也持久化。所以要做到真正的高可靠性的持久化的办法是队列和消息都持久化

 3、 通道: 提供大部分的协议操作。

                   为了线程的安全不要共享通道,应该一个线程对应一个通道。尽量使用通道池 Spring AMQP中可以实现

4、 网络故障自动恢复过程

     连接恢复: 重新连接----恢复连接监听器 -----重新打开  通道 ----恢复通道监听器----恢复通道的basic.qos,发布者确认和交易设置

     拓扑恢复(恢复通道):重新声明交换器----重新声明队列-----恢复所有绑定----恢复所有消费者

5、多消费者时消息分发

     缘起:队列的优势就是并行处理,如果加压了大量的消息,就得增加消费者

    循环分发: 是按次序分发,比如有两个消费者,轮流给两个消费者发送消息。 消息:1 2 3 4 5 6   消费者1将接收到1 3 5   消费者2接收到 2 4 6 。两个消费者接收的消息数量是一样的。这样如果某些消息比较大,会导致一个消费者繁忙,另一个消费者空闲,造成资源浪费,也降低了速度。原因RabbitMQ 只是当消息进入队列时就分发出去,而没有查看每个工作者未返回确认信息的数量。

   公平分发: 消费者告诉mq一次只能发一个消息给我,当我给你返回消息确认时,你再给我发送下一个消息。这样就不会轮流分发了,mq会自动寻找空闲的消费者。 利用了消息确认机制

 6 消息确认机制

   为了保证消息不丢失,所以rabbitmq支持消息确认机制。mq给消费者发送一条消息,消费者处理完这个消息后,将会给mq返回一个消息确认: 我已经成功的处理完了,你可以删除它了。如果有其他消费者,就会将该条消息发送到其他消费者手中。

  但是这样可能会出现消息重复发送的问题,可以利用等幂处理

8、队列、消息持久化

    如果消费者挂掉了,可以利用消息确认机制保证消息的准确性。 但是服务器挂掉了,则会丢掉所有的队列和消息。所以就要使用到队列的持久化和消息的持久化,将消息和队列持久会到磁盘中。 

  如果一个消费者在返回确认消息前死亡,mq则认为该消息并没有完全处理完,将会把这条消息重新放入队列中,

9、实现消息的延迟加载

    使用队列的长度限制和消息存活时间(TTL)、两个队列。 生产者将消息发送到第一个队列中,该队列没有消费者去监听。给其设置过期时间,比如过我要将这个消息延迟60秒发送,则设置过期时间为六十秒,过了六十秒则该消息会被置入死信队列中,也就时第二个队列,死信队列时被消费者监听的,死信队列一有消息就会被消费者监听到。这样就实现了延迟处理。

   还有一种比较简单的方法,是使用一个延迟插件rabbitmq_delayed_message_exchange

10 rabbitmq的主要组成

connection 连接

channel 通道

exchange 交换器

bind 绑定 从交换器到队列的动态绑定的过程

queue 队列

监听器

生产者、消费者

11 rabbitmq的主要作用

    解耦、 削峰填谷、解决生产者和消费者的性能差

 

 

 

    

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、付费专栏及课程。

余额充值