https://mmbiz.qpic.cn/mmbiz_jpg/sXFqMxQoVLEBqF1pxoH0xnM8THYI4LSLORhlwC1uGibJ8oyEBqiaysuxKH1InGXoFJBR1dQAKPkykibCpCm3cQ2Wg/640?wx_fmt=jpeg

整体阅读时间,在 40 分钟左右。

大家好,我是苏三!

提示:结语有彩蛋,非常好的建议,值得大家一看!

常见的消息队列很多,主要包括 RabbitMQ、Kafka、RocketMQ 和 ActiveMQ,相关的选型可以看我之前的系列,这篇文章只讲 RabbitMQ,先讲原理,后搞实战。

文章很长,如果你能一次性看完,“大哥,请收下我的膝盖”,建议大家先收藏,啥时需要面试,或者工作中遇到了,可以再慢慢看。

不 BB,直接上思维导图:

https://mmbiz.qpic.cn/mmbiz_png/sXFqMxQoVLEBqF1pxoH0xnM8THYI4LSL5cRfpJNPML2UIEeDHWf5tdj6Rc7Ep3QPjiaSwzMhU91hR72dYD73Vfw/640?wx_fmt=png

1. 消息队列

1.1 消息队列模式

消息队列目前主要 2 种模式,分别为 “点对点模式” 和“发布 / 订阅模式”。

1.1.1 点对点模式

一个具体的消息只能由一个消费者消费,多个生产者可以向同一个消息队列发送消息,但是一个消息在被一个消息者处理的时候,这个消息在队列上会被锁住或者被移除并且其他消费者无法处理该消息。

需要额外注意的是,如果消费者处理一个消息失败了,消息系统一般会把这个消息放回队列,这样其他消费者可以继续处理。

https://mmbiz.qpic.cn/mmbiz_png/sXFqMxQoVLEBqF1pxoH0xnM8THYI4LSLaKTHNFbmRshmZtCMmVIDWuHO6303CPfhDe0azAUAFk1eIQG7LhUhxQ/640?wx_fmt=png

1.1.2 发布 / 订阅模式

单个消息可以被多个订阅者并发的获取和处理。一般来说,订阅有两种类型:

https://mmbiz.qpic.cn/mmbiz_png/sXFqMxQoVLEBqF1pxoH0xnM8THYI4LSLJCEZDaMHKMCicqOEWgS5PTpe4tpkeb0msIamDxJ7g2pJOQWzg8JXKwA/640?wx_fmt=png