RabbitMQ的特点与应用场景
Posted php-linux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ的特点与应用场景相关的知识,希望对你有一定的参考价值。
1、RabbitMQ的主要特点
(1)可靠性:RabbitMQ可通过队列持久化,交换机持久化,消息持久化及ACK回应等机制保证可靠性
(2)支持多种语言与协议:RabbitMQ几乎支持所有的编程语言,还支持AMQP,STOMP,MQTT等多种协议
(3)管理界面:RabbitMQ有一个可视化的管理界面可以用来直观的查看RabbitMQ的状态及运行情况
(4)可灵活的扩展:多个RabbitMQ节点可以组成一个集群,队列可以在集群中的机器上设置镜像,使得在部分节点出现问题的情况下队仍然可用
2、RabbitMQ的主要应用场景
(1)解耦
比如订单-库存系统,传统的下订单过程是下订单成功之后,立即减少库存,对库存系统有着强依赖,倘若库存系统出现问题,调用库存系统失败,则数据回滚,导致订单创建失败
采用RabbitMQ的处理的过程,下订单成功之后,将消息写入消息队列,库存系统从消息队列里去取数据,执行自己减库存的操作,这样即便库存系统出现问题,订单依旧能够创建成功。但是这种方式容易造成订单与库存的数据不一致,要注意RabbitMQ的持久化或其它策略来保证数据的一致性
(2)异步处理
比如用户注册后需要发送信息和邮件给用户的操作
如果采用传统方式,则注册成功之后发短信>发邮件两个串行操作,执行时间长
如果采用RabbitMQ的方式,注册成功之后将消息写入消息队列,写入的时间远小于发短信或邮件的时间,然后再去发短信和邮件,由于这两个操作基本同时进行,所以这两个操作可以看做是并行操作,大大节省时间
(3)处理日志
一个项目需要各种各样的日志,来记录操作,调用过程等,日志系统不要求实时性,使用消息队列处理就非常方便了
(4)流量削峰
消息队列是基于队列的,在秒杀活动中,当队列写入消息达到某一数值时,不再写入消息队列,而直接跳转到活动结束的页面,由于队列先进先出的这一特性,也能保证秒杀活动的秒杀顺序
以上是关于RabbitMQ的特点与应用场景的主要内容,如果未能解决你的问题,请参考以下文章