RabbitMQ入门(一)——了解RabbitMQ

SpringCloud之整合ribbonMyBatis-Plus之@Version的结合,实现分布式系统下并发时保证数据一致性。
在这里插入图片描述

于是使用Jemter进行测试,一万个线程同时发起请求,mybatis-plus的@version虽然保证了数据的一致性,但是服务消费者多次发送请求到服务提供者导致后面请求失效
在这里插入图片描述
然后就了解到rabbitMQ
在这里插入图片描述

一、简介

  1. RabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据。
  2. RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。
  3. Erlang语言在数据交互方面性能优秀,有着和原生Socket一样的延迟,这也是RabbitMQ高性能的原因所在。

术语解释

消息队列(Message Queue):简称MQ,本质是个队列,先进先出(FIFO),存放的内容是message,用于不同进程Process/线程Thread之间通信。
Erlang:一种通用的面向并发的编程语言。
AMQP:一个提供统一消息服务的应用层标准高级消息队列协议

二、应用场景

2.1 解耦

场景说明:用户下单后,订单系统需要通知库存系统。按照传统的做法,就说下订单时,订单系统调用库存系统提供的接口。
在这里插入图片描述
传统做法的缺点:

  • 库存系统无法访问时,订单调用减库存失败,从而导致订单失败
  • 订单系统与库存系统耦合

使用RabbitMQ,引入消息队列:
在这里插入图片描述

  • 订单系统:下订单时,系统会自动返回提醒——下单成功,将下单的信息写入到消息队列中。
  • 库存系统:订阅消息队列通道,收到下单信息时,根据下单信息进行库存操作
  • 当下单时,如果库存系统不能正常使用,订单系统写入消息队列就不再关心其他的后续操作,不影响正常下单,实现订单系统库存系统的应用解耦

2.2 异步提升效率

一些业务比较复杂,处理时间比较长,但还得需要及时的响应结果给另一方,这就得需要采用异步的方式来处理这种复杂的业务逻辑,先把主要的业务流程走完,另外一些业务借助多线程技术或者使用MQ进行异步处理

淘宝购买商品为例:
在购买商品时,需要记录日志,调用积分服务,还要调用第三方支付端(微信支付、支付宝),传统做法就两种:

1. 串行
2. 并行

2.2.1 串行方式

在这里插入图片描述
串行的方式响应给第三方支付端很可能会超时,会引起第三方端进行重试

2.2.2 并行方式

在这里插入图片描述
引入消息队列后,把记录日志调整积分两个业务处理逻辑进行异步处理。整个响应时间就等于主业务逻辑的时间+写入消息队列的时间响应时间串行方式短得多。

2.3 流量削峰

应用场景:

平时系统的请求量可能每秒就100个,系统稳定运行。当遇到节日(比如双十一购物节)、新商品上架秒杀(当年小米5s秒杀,可惜笔者没秒到)或微博有瓜(汪峰老师发新专辑),系统每秒并发请求量暴增,进而导致系统崩溃,服务器宕机。

使用RabbitMQ,引入消息队列后:

  • 进入请求高峰期时,将请求写入MQ,系统从MQ拉取不超过自己每秒能处理的请求数进行处理,于是这一期间会有大量请求积压在MQ里。
  • 高峰期过了之后,每秒就只有100个请求进入MQ了,但是系统还是按照每秒2000个请求的速度在处理,系统快速将积压的消息消费掉。

三、搭建RabbitMQ环境

3.1 windows

3.1.2 安装Erlang

下载Erlang
安装:
傻瓜式安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.2 安装RabbitMQ

下载RabbitMQ
安装:
傻瓜式安装
在这里插入图片描述
在这里插入图片描述

3.1.3 启动RabbitMq管理控制台(图形管理界面)

  1. 安装成功后在开始菜单点击RabbitMQ Command Prompt(sbin dir)
    在这里插入图片描述
    在这里插入图片描述
  2. 输入命令:
  • 启动服务:net start RabbitMQ
  • 停止服务:net stop RabbitMQ
  1. 输入命令启用管理工具
rabbitmq-plugins enable rabbitmq_management
  1. 浏览器中查看:http://127.0.0.1:15672/
    在这里插入图片描述
  2. 登录账号
    使用默认账号&密码登录:guest
    在这里插入图片描述

3.2 Linux

3.2.1 安装Erlang

下载erlang(提取码:v2lo)
将对应的rpm文件复制到opt目录下

在这里插入图片描述
输入安装命令

rpm -ivh erlang-23.2.3-1.el7.x86_64.rpm

在这里插入图片描述
安装socat 插件,输入命令

yum install  -y socat

在这里插入图片描述

3.2.2 安装rabbitMQ

下载rabbitMQ(提取码:rure)
跟erlang的文件一样,复制到opt目录下输入安装命令

rpm -ivh rabbitmq-server-3.8.11-1.el7.noarch.rpm

在这里插入图片描述
使用命令查看rabbit是否启动成功

ps -ef|grep rabbit

此时rabbitMQ服务没启动,使用命令启动

rabbitmq-server -detached

再一次查看,rabbitMQ服务启动了
在这里插入图片描述
关闭rannitMQ命令

rabbitmqctl stop 

3.2.3 启动RabbitMq管理控制台(图形管理界面)

查看可用插件

rabbitmq-plugins list

在这里插入图片描述
启用控制管理台

rabbitmq-plugins enable rabbitmq_management

在这里插入图片描述
linux访问本地15672端口
在这里插入图片描述

四、用户管理

4.1 添加用户

admin页签下点击Add user
在这里插入图片描述

4.2 删除用户

选中用户
在这里插入图片描述
点击 delete this user
在这里插入图片描述
在这里插入图片描述

4.3 角色

角色标签角色名称描述
Admin超级管理员可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作
Monitoring监控者可登陆管理控制台,同时可以查看节点的相关信息
Policymaker策略制定者可登陆管理控制台, 同时可以对**策略(policy)**进行管理。但无法查看节点的相关信息
Management普通管理者仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理
none无角色不能登录管理控制台

4.4 创建Virtual Hosts

创建虚拟机
在这里插入图片描述
点击testhost(创建的虚拟机),设置虚拟机权限
在这里插入图片描述
看到admin已经加了testhost的虚拟机权限
在这里插入图片描述

五、卸载RabbitMQ

  1. 打开Windows控制面板,双击“程序和功能”。

  2. 在当前安装的程序列表中,右键单击RabbitMQ Server,然后单击“卸载”。

  3. 在当前安装的程序列表中,右键单击“Erlang OTP”,然后单击“卸载”。

  4. 打开Windows任务管理器。

  5. 在任务管理器中,查找进程epmd.exe。 如果此进程仍在运行,请右键单击该进程,然后单击“结束进程”。

  6. 删除RabbitMQ和Erlang的所有安装目录。

  7. 删除文件C:\Windows\erlang.cookie(如果存在)。

  8. 转到用户文件夹:C:\Users [username],然后删除文件.erlang.cookie
    在这里插入图片描述

  9. 同样在User文件夹中,转到AppData\Roaming\RabbitMQ。删除RabbitMQ文件夹。
    在这里插入图片描述

  10. 开运行cmd->sc delete RabbitMQ。

  11. 打开运行->regedit 找到RabbitMQ节点,删掉即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值