当前位置: 首页 > news >正文

RabbitMQ 概述与安装

MQ 作用与介绍

MQ 是什么

MQ (message queue),从字面意思看是一个队列, FIFO 先进先出,只不过里面存放的内容是 消息 

消息 可以比较简单,比如只包含 文本字符串,JSON 等;也可以很复杂,比如 内嵌对象 等

MQ 多用于分布式系统之间进行通信

系统之间的调用通常有两种方式:

1.同步通信

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

2.异步通信

数据从一端发出后,先进入一个容器进行临时存储,当达成某个条件时,再由这个容器发送给另一端.

容器的一个具体实现就是 MQ (message queue)

MQ 作用

MQ 主要工作是接收并转发消息

1.异步解耦

在业务流程中, 一些操作可能非常耗时, 但并不需要即时返回结果. 可以借助MQ把这些操作异步化, 比如用户注册后发送注册短信或邮件通知, 可以作为异步任务处理, 而不必等待这些操作完成后才告知用户注册成功

2.流量削峰

在访问量剧增的情况下, 应用仍然需要继续发挥作用 但是这样的突发流量并不常见. 如果以能处理这类峰值为标准而投⼊资源,无疑是巨大的浪费. 使用MQ能够使关键组件支撑突发访问压力, 不会因为突发流量而崩溃. 比如秒杀或者促销活动, 可以使用MQ来控制流量, 将请求排队, 然后系统根据自己的处理能力逐步处理这些请求

3.消息分发

当多个系统需要对同⼀数据做出响应时, 可以使用MQ进行消息分发. 比如支付成功后, 支付系统可以向MQ发送消息, 其他系统订阅该消息, 而无需轮询数据库

4.延迟通知

在需要在特定时间后发送通知的场景中, 可以使用MQ的延迟消息功能, 比如在电子商务平台中,如果用户下单后⼀定时间内未支付,可以使用延迟队列在超时后自动取消订单

..

MQ 选择

目前有很多的MQ产品, 例如RabbitMQ, RocketMQ, ActiveMQ, Kafka, ZeroMQ等, 也有直接使用Redis充当消息队列的案例, 这些消息队列, 各有侧重

1.Kafka

Kafka⼀开始的目的就是用于日志收集和传输,追求高吞吐量, 性能卓越, 单机吞吐达到十万级, 在日志领域比较成熟, 功能较为简单,主要支持简单的 MQ 功能

2.RocketMQ

在设计时借鉴了Kafka,并做出了⼀些自己的改进, 可用性、可靠性以及稳定性等方面都有出色的表现. 适合对于可靠性比较高,且并发比较大的场景. 但支持的客户端端语言不多, 且社区活跃度一般

3.RabbitMQ

采用Erlang语言开发, MQ 功能比较完备, 且几乎支持所有主流语言,开源提供的界面也非常友好, 性能较好, 吞吐量能达到万级, 社区活跃度也比较高

RabbitMQ 介绍

RabbitMQ 实现了 AMQP 的 消息队列 服务

AMQP  Advanced Message Queuing Protocol (高级消息队列协议)

是一个通用的应用层协议,提供统一消息服务的协议,为面向消息的中间件设计

基于此协议的客户端与消息中间件可传递消息,并不受客户端或中间件,开发语言等条件的限制

RabbitMQ 安装

RabbitMQ已经包含在标准的Ubuntu仓库中, 然而包含的版本通常比最新的RabbitMQ发行版落后很多,可能提供的RabbitMQ版本已经不支持. RabbitMQ团队制作了自己的软件包,并使用Cloudsmith进行分发

具体操作可参考 : RabbitMQ

由于上述方法过于复杂,所以此处 使用 Ubuntu 仓库中的版本来安装

1.安装 Erlang

RabbitMQ 需要 Erlang 语言的支持,在安装 RabbitMQ 之前需要先安装 Erlang

#更新软件包

sudo apt-get update

#安装 Erlang

sudo apt-get install erlang

#查看 Eralng 版本

sudo apt-get install erlang

#退出命令

halt().  

2.安装 RabbitMQ

#更新软件包

sudo apt-get update

#安装 RabbitMQ

sudo apt-get install rabbitmq-server

#安装结果确认

systemctl status rabbitmq-server

(此处出现 active 即为成功)

3.安装 RabbitMQ 管理界面

#默认是不安装管理界面的

rabbitmq-plugins enable rabbitmq_management

4.启动服务并访问

1. 启动服务

#启动 RabbitMQ

sudo service rabbitmq-server start

2. 通过 IP : port 访问管理界面

http://云服务器IP:15672

15672 为默认端口号,云服务器需要开启端口

默认用户名和密码都是 guest

RabbitMQ 从 3.3.0 开始禁止使用 guest/guest 权限通过除 localhost 外的访问

此处需要添加新的管理员用户

3. 添加管理员用户

#添加用户 admin,密码 admin

rabbitmqctl add_user admin admin

#给用户添加权限

rabbitmqctl set_user_tag admin administrator

#通过 IP : port 访问,使用刚才设置的用户名和密码登录

浏览器    http://云服务器IP:15672

管理员界面如下图所示:

相关文章:

  • 前端如何播放flv视频
  • 基于音频Transformer与动作单元的多模态情绪识别算法设计与实现(在RAVDESS数据集上的应用)
  • Vue3的模块化设计: 使用Script Setup API
  • Vue 3.0中自定义Composition API
  • 基于python的机器学习(九)—— 评估算法(二)
  • axios报错: Uncaught ReferenceError: axios is not defined
  • 黑马点评双拦截器和Threadlocal实现原理
  • Java多线程编程最佳实践
  • Docker Swarm配置
  • 算法题:小红的子串
  • Python爬虫实战:研究Portia框架相关技术
  • 使用workvisual对库卡机器人进行程序备份
  • 【漫话机器学习系列】276.梯度悬崖(Gradient Cliff)
  • 初识 RocketMQ 知识总结:基础概念、架构解析、核心特性与应用场景
  • 【Java学习笔记】代码块
  • [Solution] git push error (exit code 128)
  • 试验台铁地板:颠覆传统的创新之举
  • 关键点翻转 数据增强踩坑
  • DeepSeek实战--MCP Client Stdio模式
  • android studio 开启无线调试
  • 有个网站发任务 用手机可以做/搜狗友链交换
  • 成都哪家网站开发好/佛山网站建设工作
  • 制作网站制作网站建设的/竞价推广
  • 郑州市人民政府网站建设现状/软文发布推广平台
  • 做五金的有哪些外贸网站/seo查询优化
  • 企业通用网站模板/百度托管公司