RabbitMQ 概述及安装 : 程序之间沟通的桥梁

🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇

⭐ 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共六种⻆⾊

  1. Administrator 超级管理员,可登陆管理控制台(启⽤management plugin的情况下),可查看所
    有的信息,并且可以对⽤⼾,策略(policy)进⾏操作
  2. Monitoring 监控者,可登陆管理控制台(启⽤management plugin的情况下),同时可以查看
    rabbitmq节点的相关信息(进程数,内存使⽤情况,磁盘使⽤情况等)。
  3. Policymaker 策略制定者,可登陆管理控制台(启⽤management plugin的情况下),同时可以对
    policy进⾏管理。但⽆法查看节点的相关信息.
  4. Management 普通管理者,仅可登陆管理控制台(启⽤management plugin的情况下),⽆法看到
    节点信息,也⽆法对策略进⾏管理.
  5. Impersonator 模拟者,⽆法登录管理控制台。
  6. None 其他⽤⼾,⽆法登陆管理控制台,通常就是普通的⽣产者和消费者。

这里我们将新用户admin设置为超级管理员,拥有所有权限。

现在你可以使用刚刚创建的admin用户和对应的密码登录管理界面了。

以上就是 Rabbitmq 概述和安装了,如果需要docker 或者 CentOS 安装方式评论区或者私信dd我

感谢阅览!!!

相关推荐
励志成为嵌入式工程师20 分钟前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉1 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer1 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
码农小旋风1 小时前
详解K8S--声明式API
后端
Peter_chq1 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml41 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
P.H. Infinity1 小时前
【RabbitMQ】03-交换机
分布式·rabbitmq
小小小妮子~1 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616881 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
记录成长java2 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet