1、RabbitMQ的主要特点

(1)可靠性:RabbitMQ可通过队列持久化,交换机持久化,消息持久化及ACK回应等机制保证可靠性

(2)支持多种语言与协议:RabbitMQ几乎支持所有的编程语言,还支持AMQP,STOMP,MQTT等多种协议

(3)管理界面:RabbitMQ有一个可视化的管理界面可以用来直观的查看RabbitMQ的状态及运行情况

(4)可灵活的扩展:多个RabbitMQ节点可以组成一个集群,队列可以在集群中的机器上设置镜像,使得在部分节点出现问题的情况下队仍然可用

2、RabbitMQ的主要应用场景

(1)解耦

比如订单-库存系统,传统的下订单过程是下订单成功之后,立即减少库存,对库存系统有着强依赖,倘若库存系统出现问题,调用库存系统失败,则数据回滚,导致订单创建失败

RabbitMQ的特点与应用场景(二)-LMLPHP

采用RabbitMQ的处理的过程,下订单成功之后,将消息写入消息队列,库存系统从消息队列里去取数据,执行自己减库存的操作,这样即便库存系统出现问题,订单依旧能够创建成功。但是这种方式容易造成订单与库存的数据不一致,要注意RabbitMQ的持久化或其它策略来保证数据的一致性

RabbitMQ的特点与应用场景(二)-LMLPHP

(2)异步处理

比如用户注册后需要发送信息和邮件给用户的操作

如果采用传统方式,则注册成功之后发短信>发邮件两个串行操作,执行时间长

如果采用RabbitMQ的方式,注册成功之后将消息写入消息队列,写入的时间远小于发短信或邮件的时间,然后再去发短信和邮件,由于这两个操作基本同时进行,所以这两个操作可以看做是并行操作,大大节省时间

RabbitMQ的特点与应用场景(二)-LMLPHP

(3)处理日志

一个项目需要各种各样的日志,来记录操作,调用过程等,日志系统不要求实时性,使用消息队列处理就非常方便了

(4)流量削峰

消息队列是基于队列的,在秒杀活动中,当队列写入消息达到某一数值时,不再写入消息队列,而直接跳转到活动结束的页面,由于队列先进先出的这一特性,也能保证秒杀活动的秒杀顺序

下一章:RabbitMQ的交换机类型(三)

05-13 15:14