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的交换机类型(三)

RabbitMQ的特点与应用场景(二)的更多相关文章

  1. RabbitMQ由浅入深入门全总结(二)

    写在最前面 距离上一次发文章已经很久了,其实这段时间一直也没有停笔,只不过在忙着找工作还有学校结课的事情,重新弄了一下博客,后面也会陆陆续续会把文章最近更新出来~ 这篇文章有点长,就分了两篇 PS:那 ...

  2. IdentityServer4 + SignalR Core +RabbitMQ 构建web即时通讯(二)

    IdentityServer4 + SignalR Core +RabbitMQ 构建web即时通讯(二) IdentityServer4 用户中心生成数据库 上文已经创建了所有的数据库上下文迁移代码 ...

  3. 使用WPF实现3D场景[二]

    原文:使用WPF实现3D场景[二] 在上一篇的文章里我们知道如何构造一个简单的三维场景,这次的课程我将和大家一起来研究如何用代码,完成对建立好了的三维场景的观察. 首先看一下DEMO的界面:     ...

  4. 二、RabbitMQ 进阶特性及使用场景 [.NET]

    前言 经过上一篇的介绍,相信大家对RabbitMQ 的各种概念有了一定的了解,及如何使用RabbitMQ.Client 去发送和消费消息. 特性及使用场景 1. TTL 过期时间 TTL可以用来指定q ...

  5. RabbitMQ的几种应用场景

    RabbitMQ是一个消息代理,从“生产者”接收消息并传递消息至“消费者”,期间可根据规则路由.缓存.持久化消息.“生产者”也即message发送者以下简称P,相对应的“消费者”乃message接收者 ...

  6. 学习在.NET Core中使用RabbitMQ进行消息传递之持久化(二)

    前言 上一节我们简单介绍了RabbitMQ和在安装后启动所出现的问题,本节我们开始正式进入RabbitMQ的学习,对于基本概念请从官网或者其他前辈博客上查阅,我这里不介绍基础性东西,只会简单提一下,请 ...

  7. RabbitMQ 从入门到精通(二)

    目录 1. 消息如何保障百分之百的投递成功? 1.1 方案一:消息落库,对消息状态进行打标 1.2 方案二:消息的延迟投递,做二次确认,回调检查 2. 幂等性 2.1 幂等性是什么? 2.2 消息端幂 ...

  8. RabbitMQ Linux(Redhat6.5)安装(二 )

    一.安装erlang 由于RabbitMq的linux运行环境需要erlang环境,所以需要先安装erlang: 1.erlang下载: http://erlang.org/download/(我下载 ...

  9. RabbitMQ消息队列系列教程(二)Windows下安装和部署RabbitMQ

    摘要 本篇经验将和大家介绍Windows下安装和部署RabbitMQ消息队列服务器,希望对大家的工作和学习有所帮助! 目录 一.Erlang语言环境的搭建 二.RabbitMQ服务环境的搭建 三.Ra ...

随机推荐

  1. Windows10 64位 安装 Postgresql 数据库

    1,下载Postgresql 10.7 版本,下载地址   https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 2 ...

  2. 为TMenuItem增加指针Data属性

    Delphi的有些组件中都包含.Data属性,比如TTreeNode,.Data属性可以认为是一个指针,可以指向任何类或者结构,方便后续操作. 但是TMenuItem没有.Data属性,下面介绍最简单 ...

  3. Node.js启动服务报错SyntaxError: Unexpected token import

    启动服务报错如下: Last login: Wed Nov :: on ttys000 localhost:~ sipeng$ cd /Users/sipeng/Desktop/彭思/2017年学习/ ...

  4. 客户端热更新框架之UI热更框架设计(下)

    上一篇笔者介绍了关于什么是热更新,为什么需要热更新的技术文章.本篇就专门针对UI框架的热更新功能实现部分展开讨论,讨论的重点是热更新如何与UI框架进行结合? 现在笔者把设计“UI热更新框架”的整体设计 ...

  5. Python学习笔记——天气查询代码

    天气查询代码1 # 此程序无法运行,因为中国天气网的api接口被关闭了 import urllib.request import json import pickle #建立城市字典 pickle_f ...

  6. 【图像处理与医学图像处理】NV12与YV12的区别

    用videoCapture和IAMStreamConfig拿到的支持的格式列表.发现支持2中图像格式,YV12和NV12.具体是怎么样的内存分布不知道.查了些文档.自己修改了几个图.看出了点端倪YV1 ...

  7. Hogan.js的使用

    一个比较简单的前端模板引擎,参考一下两篇文件即可学会:https://www.cnblogs.com/zhangruiqi/p/8547268.htmlhttps://www.imooc.com/ar ...

  8. Java向上保留两位小数

    setScale(2, BigDecimal.ROUND_UP) 例如:0.035 运算结果 为0.01

  9. 2019SDN第四次作业

    一.配置java环境 输入命令sudo gedit ~/.bashrc 添加如下内容 二.启动并安装插件 cd distribution-karaf-0.4.4-Beryllium-SR4/bin/ ...

  10. mysql 启动出错

    错误:The server quit without updating PID file 看错误日志: Setting lower_case_table_names=2 because file sy ...