首页 > 其他分享 >RabbitMQ的使用介绍

RabbitMQ的使用介绍

时间:2023-02-05 22:33:19浏览次数:33  
标签:队列 系统 介绍 订单 RabbitMQ 下单 使用 消息


一、RabbitMQ是什么


RabbitMQ是一种常用的消息中间件,是基于AMQP协议,采用erlang语言开发的面向消息服务的中间件,是一个独立的系统应用程序,可以管理服务器计算资源和网络通信。一般可作为同构或异构系统间的数据交换平台,由于erlang语言的高并发特性,使得RabbitMQ的性能较好。应用较为广泛。

二、RabbitMQ的使用场景


举几个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。而使用消息中间件做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。
简单来说: 就是在访问量剧增的情况下,但是应用依然能够提供服务,比如“双十一”下单的人多,但是淘宝这个应用仍然要运行,所以就可以使用消息中间件采用队列的形式减少突然访问的压力。我们称之为“流量削峰”。

第二个例子,以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。当转变成基于消息队列的方式后,系统间调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在这几分钟的时间里,物流系统要处理的内存被缓存在消息队列中,用户的下单操作可以正常完成。当物流系统恢复后,继续处理订单信息即可,中间用户感受不到物流系统的故障,降低了系统间的耦合性,但是却提高了系统的复杂性,一定程度上提高了系统的可用性。我们称之为“应用解耦”。

第三个例子,还是以电商应用为例,我们下单之后,需要调用库存系统,查看当前库存余量是否支持订单需要,这个时候订单系统在向库存系统发送下单申请后,它不能保证能够立马收到库存系统的反馈,所以需要在库存系统完成查询后,再告诉订单系统下单成功,这是一个异步的过程,订单系统无需因等待库存系统回复而阻塞。我们称之为“异步处理”。

三、RabbitMQ的组成


生产者:生产无非就是发送。发送消息的程序是生产者

队列:队列是 RabbitMQ 中存放消息的结构的名称。 尽管消息流经 RabbitMQ 和您的应用程序,但它们只能存储在队列中。 队列仅受主机内存和磁盘限制的约束,它本质上是一个大消息缓冲区。 许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。

消费者:消费者是一个主要等待接收消息的程序

交换机:本质上,消息的生产者并不知道自己产生的消息会具体发送至哪个队列,生产者将消息传递给交换机,由交换机决定将消息发送至哪个队列

标签:队列,系统,介绍,订单,RabbitMQ,下单,使用,消息
From: https://www.cnblogs.com/wsdpz/p/17094110.html

相关文章

  • Git使用教程
    1.下载与安装下载地址:安装步骤直接下一步下一步就行。2.Git环境配置gitconfig--globaluser.name"YourName"gitconfig--globaluser.email"[email protected]......
  • 使用Broadcast实现Flink流处理动态更新配置数据
    需求背景Flink实时任务的开发过程中,有一个常见的场景需要动态更新一些配置信息,这些信息可能在文件中,也可能是数据库中。对于批处理任务而言这非常简单,可我们在实时任务的......
  • Java中使用etcd,包括基本的set、get、超时设置,watch监听等
    etcd的使用文章。etcd来zookeeper类似,常用的主要有set,get,getPrefix:获取指定前缀的所有数据,grant:key的超时设置,watch:监听回调事件,watchPrefix:监听某个前缀的事件,keepAlive:为......
  • openlayers01——使用openlayers展示GeoJSON数据
    使用openlayers展示GeoJSON数据文中包含geojson数据获取、选取坐标、并将坐标作为center和展示geojson1.获取数据1.1从阿里云获取数据阿里云数据可视化平台获取......
  • 关于PHP数组迭代器的使用方法实例
    近来在开发一个视力筛查电子报告系统的产品,这个产品的作用是自动提取视力筛查过程中得到的屈光检查数据,并结合数据自动生成通俗易懂且专业的电子报告,以方便家长可以通过公......
  • 使用kibana来进行ElasticSearch的信息查询检索
    大家经常会听到使用ELK搭建日志管理平台、完成日志聚合检索的功能,那么这个平台到底是个什么概念,怎么搭建,怎么使用呢?ELK包括ElasticSearch(数据存储、快速查询)、logstash(日志......
  • etcd集群搭建和使用中常见的报错信息(热key探测系列教程)
    etcd的下载地址:​​https://github.com/etcd-io/etcd/releases​​当前最新的v3.4.9,我之前用的时候包括目前京东热key线上都是用的3.4.6,下面主要是看一下如何搭建etcd集群。......
  • SVN 安装以及初步使用(最全步骤)
    开发:大项目:Git小项目:SVNSubversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.​​​http://subversion.apache.org/packages.html​​​windows......
  • PHP中 empty() 和 isset() 的区别介绍
    目录二者共同点二者区别1、对于未设置的变量的判断2、对于""(空字符串)的判断3、对于0(作为整数的0)的判断4、对于0.0(作为浮点数的0)的判断5、对于"0"......
  • 数组结构的超简单介绍
    有限个相同类型的变量组成的有序集合叫做数组,其中数组的下标是从0开始的在存储方式上,会创建连续的内存空间存放一组类型相同的数据从0开始是计算效率考虑下面定义一个数......