【RabbitMQ】基本概念以及安装教程

news/2024/9/15 6:33:35 标签: rabbitmq, 分布式

1. 什么是MQ

MQ( Message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是消息(message)而已.消息可以非常简单,比如只包含文本字符串,JSON等,也可以很复杂,比如内嵌对象.MQ多用于分布式系统之间进行通信
系统之间的调用通常有两种方式: 一种是同步通信 另外一种是 异步通信

同步通信

同步通信就是直接调用对方的服务,数据从一端发出后立即就可以达到另一端。

异步通信

数据从一端发出后,先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发送给另一端.容器的一个具体实现就是MQ(message queue)

而Rabbit是MQ的一种实现

2. MQ的作用

MQ主要工作是接收并转发消息,在不同的应用场景下可以展现不同的作用。

  • 1.异步解耦: 在业务流程中,一些操作可能非常耗时,但并不需要即时返回结果,可以借助MO把这些操作异步化,比如 用户注册后发送注册短信或邮件通知,可以作为异步任务处理,而不必等待这些操作完成后才告知用户注册成功.
  • 2.流量削峰: 在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见.如果以能处理这类峰值为标准而投入资源,无疑是巨大的浪费,使用MO能够使关键组件支撑突发访问压力,不会因为突发流量而崩溃,比如秒杀或者促销活动,可以使用MQ来控制流量,将请求排队,然后系统根据自己的处理能力逐步处理这些请求.
  • 3.消息分发:当多个系统需要对同一数据做出响应时,可以使用MQ进行消息分发,比如支付成功后,支付系统可以向MQ发送消息,其他系统订阅该消息,而无需轮询数据库.
  • 4.延迟通知: 在需要在特定时间后发送通知的场景中,可以使用MQ的延迟消息功能,比如在电子商务平台中,如果用户下单后一定时间内未支付,可以使用延迟队列在超时后自动取消订单

3. MQ产品对比

M的实现肯定不止RabbitMQ一种,在使用的时候可以根据自己的业务需求和使用场景来选择最适合自己的技术。

1. Kafka
Kafka一开始的目的就是用于日志收集和传输,追求高吞吐量,性能卓越,单机吞吐达到十万级,在日志领域比较成熟,功能较为简单,主要支持简单的 MQ 功能,如果有日志采集需求,肯定是首选kafka了。
2.RocketMQ
RocketMQ采用Java语言开发,由阿里巴巴开源,后捐赠给了Apache.它在设计时借鉴了Kafka,并做出了一些自己的改进,青出于蓝而胜于蓝,经过多年双十一的洗礼,在可用性、可靠性以及稳定性等方面都有出色的表现,适合对于可靠性比较高,且并发比较大的场景,比如互联网金融,但支持的客户端语言不多,且社区活跃度一般
3. RabbitMO
采用Erlang语言开发,MQ功能比较完备,且几乎支持所有主流语言,开源提供的界面也非常友好,性能较好,吞吐量能达到万级,社区活跃度也比较高,比较适合中小型公司,数据量没那么大,且并发没那么高的场景.

其实Rabbit的性能来说并算不上是顶尖的,但是其几乎支持所有语言,并且他有着很完善的社区,作为开发者在使用的过程中可以通过社区交流来解决自己使用技术的时候遇到的困难,这一点也是十分关键的。此外RabbitMQ的管理界面也是十分友好的.

4. RabbitMQ介绍

RabbitMQ 官⽹: RabbitMQ: One broker to queue them all | RabbitMQicon-default.png?t=N7T8https://www.rabbitmq.com/RabbitMQ是采用Erlang语言实现 AMQP(Advanced Message QueuingProtocol,高级消息队列协议)的消息中间件,它最初起源于金融系统领域,为了在分布式系统中存储和转发消息而设计的.

4.1 RabbitMQ安装(Ubuntu系统)

首先要在我们的服务器上安装erlang,毕竟Rabbit是使用Erlang来写的嘛,就像我们使用Java程序需要安装JDK是一样的道理。

#更新软件包
sudo apt-get update
#安装erlang
sudo apt-get install erlang

 使用 erl 命令查看erlang版本,出现上面的信息后就可以进行RabbitMQ的安装了。

# 安装RabbitMQ

#更新软件包
sudo apt-get update
#安装rabbitmq
sudo apt-get install rabbitmq-server
#确认安装结果
systemctl status rabbitmq-server

 完成安装后,使用查看RabbitMQ的安装状态:# systemctl status rabbitmq-server

# 安装RabbitMQ的管理界面:rabbitmq-plugins enable rabbitmq_management

4.2 启动服务并访问

# 启动服务

sudo service rabbitmq-server start

# 通过IP:port访问界面

http://yourIP:15672/  为默认端⼝号, 云服务器需要开启端口
这里默认的用户名和密码都是guest,
rabbitmq从3.3.0开始禁止使用guest/guest权限通过除 localhost 外的访问,那么就添加管理员用户吧。

4.3 添加管理员用户

操作RabbitMQ可以通过代码 或者界面 或者通过命令操作[rabbitmqctl] , 这里和我们熟悉的MySQL因为是挺像的。

# 添加用户admin 密码 password

# rabbitmqctl add_user ${账号} ${密码}
rabbitmqctl add_user admin admin

# 给用户添加权限

# rabbitmqctl set_user_tags ${ 账号 } ${ ⻆⾊名称 }
rabbitmqctl set_user_tags admin administrator

以下角色可选
RabbitMQ用户角色分为Administrator、Monitoring、Policymaker、Management、Impersonator、None共六种角色
1.Administrator 超级管理员,可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作
2.Monitoring监控者,可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmg节点的相关信息(进程数,内存使用情况,磁盘使用情况等)。
3.Policymaker 策略制定者,可登陆管理控制台(启用management plugin的情况下),同时可以对policy进行管理。但无法查看节点的相关信息.
4.Management 普通管理者,仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理.
5.lmpersonator模拟者,无法登录管理控制台。
6.None 其他用户,无法登陆管理控制台,通常就是普通的生产者和消费者

 # 访问


http://www.niftyadmin.cn/n/5638585.html

相关文章

大数据学习|理解和对比 Apache Hive 和 Apache Iceberg

文章目录 数据模型与存储事务支持性能优化使用场景总结数据模型与存储 Hive: Hive 使用的是传统的关系型数据模型,数据存储在 Hadoop 分布式文件系统 (HDFS) 中,通常是以文本格式(如 CSV 或 TSV)或者二进制格式(如 Parquet 或 ORC)。Hive 的表定义和元数据存储在一个外部…

Scott Brinker:Martech中的AI会让买家体验更好还是更糟?这取决于…….

Martech中的AI会让买家体验更好还是更糟? 你怎么知道自己正处于炒作周期的顶峰?当手段大于目的。 Martech专业人士和营销运营领导者正被推动将人工智能应用于营销——将其用于任何事情!——相信人工智能的自动化和加速,尤其是生…

百度飞将 paddle ,实现贝叶斯神经网络 bayesue neure network bnn,aistudio公开项目 复现效果不好

论文复现赛:贝叶斯神经网络 - 飞桨AI Studio星河社区 https://github.com/hrdwsong/BayesianCNN-Paddle 论文复现:Weight Uncertainty in Neural Networks 本项目复现时遇到一个比较大的问题,用pytorch顺利跑通源代码后,修改至pad…

使用 docker 部署 kvm 图形化管理工具 WebVirtMgr

文章目录 [toc]前提条件镜像构建启动 webvirtmgr创建其他 superuser配置 nginx 反向代理和域名访问绑定 kvm 宿主机local sockettcp 连接 虚拟机创建创建快照虚拟机克隆删除虚拟机 kvm 官方提供了以下这些图形化管理,license 这块也提示了是商业版(Comme…

新电脑Win11系统想要降级为Win10怎么操作?

前言 现在的电脑大部分都是Windows 11系统,组装机还好一些,如果想要使用Windows 10,只需要在安装系统的时候选择Windows 10镜像即可。 但是对于新笔记本、厂商的成品机、一体机来说,只要是全新的电脑,基本上都是Wind…

Spring Cloud Gateway整合基于STOMP协议的WebSocket实战及遇到问题解决

本实例介绍了Spring Cloud Gateway整合基于STOMP协议的WebSocket的实现。开发了聊天功能,和用户在线状态。解决了协议gateway整合websocket出现的问题 技术点 Spring Cloud GatewayNacosWebSocketSTOMPWebSocket与STOMP协议详解 1. WebSocket WebSocket 是一种通信协议,提…

前端框架介绍

前端框架是Web开发中不可或缺的工具,它们通过提供结构化的开发方式、模块化组件、响应式设计以及高效的性能优化,极大地简化了Web应用程序的开发过程。以下是对当前主流及新兴前端框架的详细介绍,这些框架不仅涵盖了广泛的功能,还…

list的简单实现

文章目录 前言list接口介绍构造函数迭代器常用容量操作元素访问插入删除头插尾插任意位置插入删除 其他常用操作 list简单实现框架构造析构插入emplace插入insert插入 删除迭代器操作符重载 前言 STL中的list是一个双向链表容器,适用于需要频繁插入和删除操作的场景…