🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇
⭐ RabbitMQ ⭐
🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇
前言
在当今快速发展的软件开发领域,不同应用程序之间的高效通信变得越来越重要。随着微服务架构和分布式系统的广泛应用,确保数据能够安全、可靠地从一个系统传递到另一个系统的需求也日益增长。这时,RabbitMQ就派上了用场。
RabbitMQ是一款开源的消息代理软件(也被称作消息队列),它实现了高级消息队列协议(AMQP)。
简单来说,RabbitMQ就像是一位中间人,帮助不同的应用程序通过发送和接收消息来相互交流,而不需要直接联系对方。这样不仅提高了应用间的独立性,还增强了整个系统的灵活性与可靠性。
1. 什么是MQ
消息队列(Message Queue, 简称MQ)从字面意思上看,其实就是一个遵循先进先出(FIFO)原则的队列,只不过队列中存放的内容是消息。这些消息可以非常简单,比如只包含文本字符串或JSON格式的数据;也可以很复杂,例如内嵌对象等。MQ通常用于分布式系统之间的通信。
系统间的调用方式
系统之间进行通信时,一般有两种方式:
同步通信 :直接调用对方的服务,数据发出后立即到达另一端。
异步通信:数据发送出去后,首先进入一个临时存储容器,在满足特定条件后,再由该容器转发给接收方。这个容器的一个具体实现就是消息队列(MQ)。
RabbitMQ:一种流行的MQ实现
RabbitMQ是一款广泛使用的开源消息代理软件,它实现了AMQP协议,并且提供了丰富的功能来支持不同的应用场景。
2. MQ的作用
异步解耦:在业务流程中,某些操作可能耗时较长但不需要即时返回结果。通过使用MQ,我们可以将这些操作异步化处理。例如,用户注册成功后发送短信或邮件通知,这类任务可以作为后台异步执行的任务,而不必等待其完成后再告知用户注册成功。
流量削峰:面对突发性的高访问量情况,如秒杀活动或促销期间,直接应对这种峰值可能会导致系统崩溃。利用MQ能够有效地平滑流量,将请求暂时存放在队列中,然后按照系统的实际处理能力逐步消化这些请求,从而保证服务的稳定运行。
消息分发:当多个系统需要对同一事件作出响应时,可以通过MQ来进行消息广播。以支付成功为例,支付系统只需向MQ发送一次消息,其他相关系统就可以订阅并处理这条消息,而无需各自频繁地查询数据库状态。
延迟通知:对于需要在特定时间之后触发的动作,比如电子商务平台上的订单超时自动取消机制,可以通过设置MQ中的延迟队列来实现。如果用户下单后一段时间内未完成支付,系统会自动取消订单。
3. RabbitMQ 的安装
这里只介绍在 ubuntu 环境下的安装方式,如果需要 CentOS 或者 docker 的安装直接在评论区dd 我。
RabbitMQ 已经包含在标准的 Ubuntu 仓库中, 然⽽,包含的版本通常⽐最新的 RabbitMQ 发⾏版落后很 多,可能提供的 RabbitMQ 版本已经不⽀持. RabbitMQ 团队制作了⾃⼰的软件包,并使⽤ Cloudsmith 进⾏分发,
具体操作可以参考: Installing on Debian and Ubuntu | RabbitMQ
由于该种⽅法安装⽐较复杂, 个人学习阶段, 这里使⽤Ubuntu仓库中的版本来安装
一、安装Erlang
首先,我们需要更新软件包列表并安装Erlang。
# 更新软件包
sudo apt-get update
# 安装Erlang
sudo apt-get install erlang
安装完成后,可以通过以下命令查看Erlang的版本:
这会启动Erlang shell,显示当前安装的版本信息。要退出Erlang shell,输入1 halt().
然后按回车键。
二、安装RabbitMQ
接下来是安装RabbitMQ本身。同样地,我们先更新软件包列表,再进行安装。
# 更新软件包
sudo apt-get update
# 安装RabbitMQ
sudo apt-get install rabbitmq-server
安装完成后,可以使用以下命令检查RabbitMQ服务的状态:
systemctl status rabbitmq-server
如果看到"active (running)"状态,说明RabbitMQ已经成功运行。
三、启用RabbitMQ管理界面
默认情况下,RabbitMQ不包含图形化的管理界面。我们需要手动启用它。
rabbitmq-plugins enable rabbitmq_management
执行上述命令后,你会看到一些关于插件被启用的信息。这表示管理界面已经被激活。
root@hcss-ecs-0bb1:~# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@hcss-ecs-0bb1:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@hcss-ecs-0bb1...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
root@hcss-ecs-0bb1:~#
四、启动服务并访问管理界面
1. 启动服务
如果你发现RabbitMQ服务还没有启动,可以使用以下命令来启动它:
sudo service rabbitmq-server start
再次检查服务状态以确认其是否正常运行。
2. 访问管理界面
通过浏览器访问以下URL来打开RabbitMQ的管理界面:
http://<你的服务器IP>:15672/
默认的用户名和密码都是guest
。注意,从RabbitMQ 3.3.0开始,guest
用户只能在本地访问(即localhost
)。如果你需要远程访问,建议创建一个新的管理员账户。
3. 添加管理员用户
为了能够远程登录管理界面,我们需要添加一个新用户并赋予其管理员权限。
-
添加用户:
rabbitmqctl add_user admin admin
-
设置用户角色:
rabbitmqctl set_user_tags admin administrator
以下⻆⾊可选
RabbitMQ⽤⼾⻆⾊分为Administrator、Monitoring、Policymaker、Management、
Impersonator、None共六种⻆⾊
- Administrator 超级管理员,可登陆管理控制台(启⽤management plugin的情况下),可查看所
有的信息,并且可以对⽤⼾,策略(policy)进⾏操作- Monitoring 监控者,可登陆管理控制台(启⽤management plugin的情况下),同时可以查看
rabbitmq节点的相关信息(进程数,内存使⽤情况,磁盘使⽤情况等)。- Policymaker 策略制定者,可登陆管理控制台(启⽤management plugin的情况下),同时可以对
policy进⾏管理。但⽆法查看节点的相关信息.- Management 普通管理者,仅可登陆管理控制台(启⽤management plugin的情况下),⽆法看到
节点信息,也⽆法对策略进⾏管理.- Impersonator 模拟者,⽆法登录管理控制台。
- None 其他⽤⼾,⽆法登陆管理控制台,通常就是普通的⽣产者和消费者。
这里我们将新用户admin
设置为超级管理员,拥有所有权限。
现在你可以使用刚刚创建的admin
用户和对应的密码登录管理界面了。
以上就是 Rabbitmq 概述和安装了,如果需要docker 或者 CentOS 安装方式评论区或者私信dd我
感谢阅览!!!