一:介绍
一:简介
Rabbitmq就是一个高级消息队列协议的开源消息协议的中间件,消息队列是应用程序到应用程序之间进行数据通信的通道,应用程序将消息发到队列中.另一方从队列中读取数据,完成数据的交互
二:产生背景
在Python中在一个进程之中多线程可以通过线程队列完成线程之间的通信,也使用进程队列完成不通进程之间的通信
在上述两者之中使用的队列模块都是Python独有的 假如我现在有个进程A使用Python开发,有个进程B使用Go开发的,由于不同的语言问题导致不能完成数据的通信
或者两个应用程序都不在同一台主机
为解决上述问题 我们可以使用Rabbitmq进行不同语言开发的不同程序进行数据交互
三:应用场景
系统的高可用性:
在电商某商品进行商品秒杀的时候,高流量,高并发的场景,由于服务器接收大量的数据请求,可能导致服务器宕机,某些业务场景可能极为复杂,但是实时性不是很高,我们可以将其加入到队列中,让程序后台去处理,减少服务器的压力
系统的高扩展性:
分布式系统,集成系统,子系统之间的对接,以及架构设计中常常需要考虑消息队列的应用。
二:安装Erlang
安装Erlang 时要注意安装的RabbityMQ 所依赖的Erlang版本,根据RabbitMQ的要求选择一个版本,这里我要安装的RabbitMQ的版本是 3.7.7 ,他依赖的Erlang范围是20.3
Erlang下载地址 https://www.erlang.org/downloads/20.3
设置ERLANG_HOME 环境变量
# 安装路径 D:SoftWareerlanginerl.exe
注意:如果之前安装了Erlang的其他版本,需要卸载后在进行重新安装和设置。
在开始菜单查找Erlang,点击启动 打开如下界面,那么Erlang就安装成功了。接下来就安装RabbitMQ。
三:安装RabbitMq
可以在RabbitMQ的官方网站下载最新版本的RabbitMQ服务器安装程序这里我下载的是官方推荐的最新版本 然后点击默认安装。
# 下载地址 https://www.rabbitmq.com/install-windows.html
设置RabbitMQ环境变量
RabbitMQ 安装好后在开始菜单输入rabbitmq 会看到三个菜单:
这里的三个菜单是提供控制Windows service的命令,为了能够在任意Windows命令窗口上操控RabbitMQ服务需要在系统里加一个环境变量并且配置在系统的PHTH环境变量中。
# 安装路径 D:SoftWareRabbitMq abbitmq_server-3.7.7sbin
四:安装 rabbitmq_management
我们用命令查看一下RabbtitMQ的所有插件:
C:WINDOWSsystem32>rabbitmq-plugins list
看到RabbtitMQ 罗列出来了很多插件
我们用下列命令安装rabbitmq_management插件,这款插件是可以可视化的方式查看RabbitMQ 服务器实例的状态,以及操控RabbitMQ服务器。
C:WINDOWSsystem32>rabbitmq-plugins enable rabbitmq_management
运行完命令后,看到下图表示安装成功了。
现在我们在浏览器中输入:http://localhost:15672 可以看到一个登录界面:
这里可以使用默认账号guest/guest登录后的界面如下:
在浏览器中输入 http://localhost:15672/api/ 就可以看到 RabbitMQ Management HTTP API 文档,如下图:
这样就可以查看RabbitMQ server实例状态的相关信息了。
五:管理rabbitmq_management的用户
用命令rabbitmqctl list_users 查看一下现rabbitmq_management注册用户
发现现在只有一个用户guest,并且它的tag是administrator.
那么在命令行下创建一个用户,创建用户的命令合是:
rabbitmqctl add_user [username] [password]
现在创建一个username=rabbit1 password=rabbit1的用户, 命令如下:
rabbitmqctl add_user rabbit1 rabbit1
创建成功了:
现在看下有多少用户,跑一下命令:
rabbitmqctl list_users
发现用户列表里多了一个用户 rabbit1,但是tag是空的。使用命令给rabbit设置tag,设置tag的命令格式:
rabbitmqctl set_user_tag [tag1] [tag2] ...
一次可以给一个用户设置多个tag,也可以设置一个
现在rabbit1 有两个tag了一个是administrator ,一个是none.
有5个tag可供选择,分别是:administrator ,monitoring,policymaker,management和none 有兴趣的同学可以到这里了解各个tag的含义,其实这里的tag代表的是权限,administrator是最高权限,none表示不能访问,这里administrator和none的组合,权限应该是向高看齐,忽略none,用的是administrator的权限。我们用rabbit1/rabbit1 登录rabbitmq_management。
其实有了rabbitmq_management这个可视化插件,很多事情都可以在这个插件里干,包括创建用户,创建交换机(Exchange)和创建队列(Queque)。