文章目录
RabbitMQ是目前非常热门的一款消息中间件,凭借其高可靠、易扩展、高可用及丰富的功能特性受到越来越多公司的青睐。
什么是消息中间件
消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串、 JSON 等,也可以很复杂,比如内嵌对象。
消息队列中间件,也可以称为消息队列或者消息中间件。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
它一般有两种传递模式:点对点(P2P,Point-to-Point)模式和发布/订阅(Pub/Sub)模式。
点对点模式
点对点模式是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。
发布订阅模式
发布订阅模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题(topic),主题可以认为是消息传递的中介,消息发布者将消息发布到某个主题,
而消息订阅者则从主题中订阅消息。主题使得消息的订阅者与消息的发布者互相保持独立,不需要进行接触即可保证消息的传递,发布/订阅模式在消息的一对多
广播时采用。
目前开源的消息中间件有很多,比较主流的有RabbitMQ、Kafka、ActiveMQ、RocketMQ等。
消息中间件的作用
解耦
场景说明:
用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。
传统模式的缺点:
假如库存系统无法访问,则订单减库存将失败,从而导致订单失败订单系统与库存系统耦合。
引入消息队列:
订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功
库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作
优点ÿ