RabbitMQ的使用介绍
一、RabbitMQ是什么
RabbitMQ是一种常用的消息中间件,是基于AMQP协议,采用erlang语言开发的面向消息服务的中间件,是一个独立的系统应用程序,可以管理服务器计算资源和网络通信。一般可作为同构或异构系统间的数据交换平台,由于erlang语言的高并发特性,使得RabbitMQ的性能较好。应用较为广泛。
二、RabbitMQ的使用场景
举几个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。而使用消息中间件做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。
简单来说: 就是在访问量剧增的情况下,但是应用依然能够提供服务,比如“双十一”下单的人多,但是淘宝这个应用仍然要运行,所以就可以使用消息中间件采用队列的形式减少突然访问的压力。我们称之为“流量削峰”。
第二个例子,以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。当转变成基于消息队列的方式后,系统间调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在这几分钟的时间里,物流系统要处理的内存被缓存在消息队列中,用户的下单操作可以正常完成。当物流系统恢复后,继续处理订单信息即可,中间用户感受不到物流系统的故障,降低了系统间的耦合性,但是却提高了系统的复杂性,一定程度上提高了系统的可用性。我们称之为“应用解耦”。
第三个例子,还是以电商应用为例,我们下单之后,需要调用库存系统,查看当前库存余量是否支持订单需要,这个时候订单系统在向库存系统发送下单申请后,它不能保证能够立马收到库存系统的反馈,所以需要在库存系统完成查询后,再告诉订单系统下单成功,这是一个异步的过程,订单系统无需因等待库存系统回复而阻塞。我们称之为“异步处理”。
三、RabbitMQ的组成
生产者:生产无非就是发送。发送消息的程序是生产者
队列:队列是 RabbitMQ 中存放消息的结构的名称。 尽管消息流经 RabbitMQ 和您的应用程序,但它们只能存储在队列中。 队列仅受主机内存和磁盘限制的约束,它本质上是一个大消息缓冲区。 许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。
消费者:消费者是一个主要等待接收消息的程序
交换机:本质上,消息的生产者并不知道自己产生的消息会具体发送至哪个队列,生产者将消息传递给交换机,由交换机决定将消息发送至哪个队列
RabbitMQ的使用介绍的更多相关文章
- RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践
RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...
- rabbitmq的简单介绍一
该博客的主要讲解了以下几种rabbitmq的用法1.实现简单的生产者发送消息给消费者2.实现序列持久化3.实现消息持久化4.实现消息公平分发5.实现广播6.实现组播7.实现细分组播 先来看下rabbi ...
- RabbitMQ的基础介绍
转自:http://blog.csdn.net/whycold/article/details/41119807 一.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构 ...
- RabbitMQ交换器Exchange介绍与实践
RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...
- RabbitMQ 基本概念介绍-----转载
1. 介绍 RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue )协议的开源实现.用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面都非 ...
- RabbitMQ In JAVA 介绍及使用
介绍: RabbitMQ是开源的消息中间件,它是轻量级的,支持多种消息传递协议,可以部署在分布式和联合配置中,以满足高级别.高可用性需求.并且可在许多操作系统和云环境上运行,并为大多数流行语言提供了广 ...
- RabbitMQ框架构建系列(二)——RabbitMQ基础知识介绍
上一篇记录了一下AMQP协议,RabbitMQ是一个Erlang开发的AMQP协议的开源实现.这一篇简单的介绍一下RabbitMQ的基本原理. 一.RabbitMQ的特点 1.可靠性:RabbitMQ ...
- RabbitMQ(2) 一般介绍
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apa ...
- RabbitMQ 的基本介绍
RabbitMQ官网教程:http://www.rabbitmq.com/getstarted.html RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现.AMQP :Adv ...
- rabbitmq的简单介绍二
上一篇博客我们没有介绍完rabbitmq,今天我们接着上一篇的博客继续介绍rabbitmq 这边的博客的内容如下 1.组播,对指定的队列设置关键词,通过关键词来控制消息的分发 2.更加细致的组播 先来 ...
随机推荐
- MySQL 更新数据 不同条件(批量)更新不同值
一般在更新时会遇到以下场景:1.全部更新:2.根据条件更新字段中的某部分内容:3.根据不同的条件更新不同的值,以下是几种场景中常用的update方法. 一.方法分类 二.具体用法 (1)根据条件更新值 ...
- C++Day12 虚拟继承内存布局测试
测试一.虚继承与继承的区别 1.1 单个继承,不带虚函数 1>class B size(8): 1> +--- 1> 0 | +--- (base class A) 1> 0 ...
- Coolify系列01- 从0到1超详细手把手教你上手Heroku 和 Netlify 的开源替代方案
什么是Coolify 一款超强大的开源自托管 Heroku / Netlify 替代方案 coolLabs是开源.自托管和以隐私为中心的应用程序和服务的统称 为什么使用Coolify 只需单击几下即可 ...
- angular11 报错 ERROR Error: If ngModel is used within a form tag, either the name attribute must be set or the form
angular 报错 ERROR Error: If ngModel is used within a form tag, either the name attribute must be set ...
- vulnhub靶场之RIPPER: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:Ripper: 1,下载地址:https://download.vulnhub.com/ripper/Ripper.ova,下载后直接vbox打 ...
- 如何使用 JuiceFS 创建 WebDAV 共享
WebDAV 是一种基于 HTTP 的文件共享协议,最初被设计用于多用户文档协作编辑的场景,也被广泛应用在基于互联网的文件存储.数据同步等网盘类应用场景. 手机端和 PC 端有大量的应用内置了对 We ...
- Unity之生成扫描二维码
Unity之生成扫描二维码 Unity之生成扫描二维码 前言 开篇 Unity版本及使用插件 正题 前期准备 首先生成二维码 然后需要扫描二维码 该使用了 挂载脚本绑定按钮和输入框 运行内容 生成二维 ...
- .Net7运行模型之托管Main函数的调用
前言: .Net7的CLR最具特色的一个地方,就是运行模型.因为它主宰了整个CLR的运行过程. 又因为其庞大的代码量,有的几十万行甚至百万行.所以理解起来非常不容易.本篇拆分来看下,里面一个细节Mai ...
- KMP 算法 再次学习
c++ 版后面再补 package cn.kbug.dynamic; import java.util.Arrays; /** * KMP 算法本质上是对 搜索的字符串做优化,然后在匹配的时候,能做到 ...
- 【ccc】为了ds的ccc2
作业: #include <stdio.h> #include<string.h> int main(){ char s[100]; gets(s); int len; len ...