自学内容网 自学内容网

RabbitMQ快速入门

目录

RabbitMQ简介

RabbitMQ环境部署

工作流程


RabbitMQ简介

  MQ( Message queue ), 从字⾯意思上看, 本质是个队列, FIFO 先入先出,只不过队列中存放的内容是消息(message) ⽽已. 消息可以⾮常简单,⽐如只包含⽂本字符串, JSON等,也可以很复杂, 比如内嵌对象.

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

1. 异步解耦: 在业务流程中, ⼀些操作可能⾮常耗时, 但并不需要即时返回结果. 可以借助MQ把这些操作异步化, ⽐如 用户注册后发送注册短信或邮件通知, 可以作为异步任务处理, 而不必等待这些操作完成后才告知⽤⼾注册成功.
2. 流量削峰: 在访问量剧增的情况下, 应⽤仍然需要继续发挥作⽤, 但是这样的突发流量并不常⻅. 如果以能处理这类峰值为标准⽽投⼊资源,⽆疑是巨⼤的浪费. 使⽤MQ能够使关键组件⽀撑突发访问压⼒, 不会因为突发流量⽽崩溃. ⽐如秒杀或者促销活动, 可以使⽤MQ来控制流量, 将请求排队, 然后系统根据⾃⼰的处理能⼒逐步处理这些请求.
3. 消息分发: 当多个系统需要对同⼀数据做出响应时, 可以使⽤MQ进⾏消息分发. ⽐如⽀付成功后, ⽀付系统可以向MQ发送消息, 其他系统订阅该消息, ⽽⽆需轮询数据库。

RabbitMQ采⽤Erlang语⾔开发, MQ 功能⽐较完备, 且⼏乎⽀持所有主流语⾔,开源提供的界⾯也⾮常友好, 性能较好, 吞吐量能达到万级, 社区活跃度也⽐较⾼,⽐较适合中⼩型公司。

RabbitMQ环境部署

此次介绍的是Linux(Ubuntu)系统下的安装。

RabbitMq需要Erlang语⾔的⽀持,在安装rabbitMq之前需要安装erlang

#更新软件包
sudo apt-get update

#安装erlang
sudo apt-get install erlang

查看erlang版本

root@hcss-ecs-0bb1:~# erl
Erlang/OTP 22 [erts-10.6.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-
threads:1]

Eshell V10.6.4  (abort with ^G)

安装RabbitMQ

#更新软件包
sudo apt-get update

#安装rabbitmq
sudo apt-get install rabbitmq-server

#确认安装结果
systemctl status rabbitmq-server

确认安装结果

root@hcss-ecs-0bb1:~# systemctl status rabbitmq-server

安装RabbitMQ管理界⾯

root@hcss-ecs-0bb1:~# rabbitmq-plugins enable rabbitmq_management

启动服务

#启动rabbitmq
sudo service rabbitmq-server start

添加⽤⼾admin, 密码:admin

# 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的情况下),同时可以查看
rabbitmq节点的相关信息(进程数,内存使⽤情况,磁盘使⽤情况等)。
3. Policymaker 策略制定者,可登陆管理控制台(启⽤management plugin的情况下),同时可以对
policy进⾏管理。但⽆法查看节点的相关信息.
4. Management 普通管理者,仅可登陆管理控制台(启⽤management plugin的情况下),⽆法看到
节点信息,也⽆法对策略进⾏管理.
5. Impersonator 模拟者,⽆法登录管理控制台。
6. None 其他⽤⼾,⽆法登陆管理控制台,通常就是普通的⽣产者和消费者。

停⽌RabbitMQ服务

sudo systemctl stop rabbitmq-server

卸载rabbitmq已安装的相关内容

sudo apt-get purge --auto-remove rabbitmq-server

工作流程

下面简单介绍RabbitMQ的工作流程:

RabbitMQ是⼀个消息中间件, 也是⼀个⽣产者消费者模型. 它负责接收, 存储并转发消息。Producer 就类似邮件发件⼈. Consumer 就是收件⼈, RabbitMQ就类似于邮局。

 Producer和Consumer:

Producer: ⽣产者, 是RabbitMQ Server的客⼾端, 向RabbitMQ发送消息
Consumer: 消费者, 也是RabbitMQ Server的客⼾端, 从RabbitMQ接收消息
Broker:其实就是RabbitMQ Server, 主要是接收和收发消息

Connection和Channel:

Connection: 连接. 是客⼾端和RabbitMQ服务器之间的⼀个TCP连接. 这个连接是建⽴消息传递的基础, 它负责传输客⼾端和服务器之间的所有数据和控制信息。
Channel: 通道, 信道. Channel是在Connection之上的⼀个抽象层. 在 RabbitMQ 中, ⼀个TCP连接可以有多个Channel, 每个Channel 都是独⽴的虚拟连接. 消息的发送和接收都是基于 Channel的.
通道的主要作⽤是将消息的读写操作复⽤到同⼀个TCP连接上,这样可以减少建⽴和关闭连接的开销,提⾼性能。

Virtual host: 虚拟主机. 这是⼀个虚拟概念. 它为消息队列提供了⼀种逻辑上的隔离机制. 对于
RabbitMQ⽽⾔, ⼀个 BrokerServer 上可以存在多个 Virtual Host. 当多个不同的⽤⼾使⽤同⼀个
RabbitMQ Server 提供的服务时,可以虚拟划分出多个 vhost,每个⽤⼾在⾃⼰的 vhost 创建
exchange/queue 等。类似于Mysql的数据库

Queue: 队列, 是RabbitMQ的内部对象, ⽤于存储消息。

Exchange: 交换机. message 到达 broker 的第⼀站, 它负责接收⽣产者发送的消息, 并根据特定的规则把这些消息路由到⼀个或多个Queue列中.
Exchange起到了消息路由的作⽤,它根据类型和规则来确定如何转发接收到的消息.

以上,关于RabbitMQ,希望对你有所帮助。


原文地址:https://blog.csdn.net/m0_73629312/article/details/142577020

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!