RabbitMQ介绍及windows下安装使用

时间:2022-04-03 06:45:14

RabbitMQ介绍

  RabbitMQ是一个由 Erlang (一种通用的面向并发的编程语言)开发的AMQP(Advanced Message Queue )的开源实现,Rabbit MQ 是建立在Erlang OTP平台上。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因此,在 2006 年的 6 月,Cisco 、Redhat、iMatix 等联合制定了 AMQP 的公开标准。

RabbitMQ是由RabbitMQ Technologies Ltd开发并且提供商业支持的。该公司在2010年4月被SpringSource(VMWare的一个部门)收购。在2013年5月被并入Pivotal。其实VMWare,Pivotal和EMC本质上是一家的。不同的是VMWare是独立上市子公司,而Pivotal是整合了EMC的某些资源,现在并没有上市。

应用场景

  言归正传。RabbitMQ,或者说AMQP解决了什么问题,或者说它的应用场景是什么?

对于一个大型的软件系统来说,它会有很多的组件或者说模块或者说子系统或者(subsystem or Component or submodule)。那么这些模块的如何通信?这和传统的IPC有很大的区别。传统的IPC很多都是在单一系统上的,模块耦合性很大,不适合扩展(Scalability);如果使用socket那么不同的模块的确可以部署到不同的机器上,但是还是有很多问题需要解决。比如:

1)信息的发送者和接收者如何维持这个连接,如果一方的连接中断,这期间的数据如何方式丢失?

2)如何降低发送者和接收者的耦合度?

3)如何让Priority高的接收者先接到数据?

4)如何做到load balance?有效均衡接收者的负载?

5)如何有效的将数据发送到相关的接收者?也就是说将接收者subscribe 不同的数据,如何做有效的filter。

6)如何做到可扩展,甚至将这个通信模块发到cluster上?

7)如何保证接收者接收到了完整,正确的数据?

AMQP协议解决了以上的问题,而RabbitMQ实现了AMQP。

安装Erlang 

所以在安装rabbitMQ之前,需要先安装Erlang 。可以去官网下载。全部点击“下一步”就行。安装后路径:C:\Program Files\erl10.0.1

设置环境变量ERLANG_HOME= C:\Program Files\erlx.x.x 
      添加到PATH  %ERLANG_HOME%\bin;

RabbitMQ介绍及windows下安装使用

安装RabbitMQ

可以去官网下载。依旧可以不改变默认进行安装。C:\Program
Files\RabbitMQ Server\rabbitmq_server-3.7.7

需要注意:默认安装的RabbitMQ 监听端口是5672

设置环境变量RABBITMQ_SERVER=C:\Program
Files\rabbitmq_server-x.x.x。
      添加到PATH %RABBITMQ_SERVER%\sbin;

4369 – erlang发现口

5672 –client端通信口

15672 – 管理界面ui端口

25672 – server间内部通信口

如果用其它协议,还有其它口,点击查看文档说明

安装好之后的目录结构为:C:\Program
Files\RabbitMQ Server\rabbitmq_server-3.7.7

其中“sbin”下放置的是常用指令:

常用指令:
rabbitmq-plugins
enable rabbitmq_management
 开启插件
rabbitmq-service
remove
 移除服务
rabbitmq-service
install
 安装服务
rabbitmq-service
start
 或者 net start rabbitmq 启动服务
rabbitmq-service
stop
 或者 net stop rabbitmq 停止服务
rabbitmqctl
status
 查看服务状态
rabbitmq-server
restart
 重启服务

配置

激活 RabbitMQ's
Management Plugin

使用RabbitMQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态。

打开命令窗口,输入命令:

"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin\rabbitmq-plugins.bat" enable rabbitmq_management

RabbitMQ介绍及windows下安装使用

这样,就安装好插件了,是不是能使用了呢?别急,需要重启服务才行。

【在 运行 services.msc中可以重启】

创建用户,密码,绑定角色

使用rabbitmqctl控制台命令(位于C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin>)来创建用户,密码,绑定权限等。

注意:安装路径不同的请看仔细啊。

rabbitmq的用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。

查看已有用户及用户的角色:rabbitmqctl.bat list_users

RabbitMQ介绍及windows下安装使用

(需要添加了 环境变量)

新增一个用户:rabbitmqctl.bat add_user username password

RabbitMQ介绍及windows下安装使用

此时来看下我们当前用户:

RabbitMQ介绍及windows下安装使用

eric 后面没有“[administrator]”

这个administrator是干嘛用的呢?这就涉及到用户角色问题了:

按照我个人理解,rabbitmq用户角色可分为五类:

超级管理员(administrator), 监控者(monitoring), 策略制定者(policymaker), 普通管理者(management)以及其他。

我们也给 eric 变成 “超级管理员” 角色:

rabbitmqctl.bat set_user_tags username administrator

再看下结果。

现在总觉得guest 这个不安全(它的默认密码是guest),想更改密码,好办:rabbitmqctl change_password userName newPassword

RabbitMQ介绍及windows下安装使用

有的人也许会说,我就是看guest不爽,老子新增了administrator用户了,就是想干掉它,可以:rabbitmqctl.bat delete_user username

RabbitMQ介绍及windows下安装使用

管理界面

使用浏览器打开http://localhost:15672访问Rabbit Mq的管理控制台,使用刚才创建的账号登陆系统。

除了可查看所有的信息 ,上面的命令 增删改查、权限设置,都可以在这个页面完成,还可以依据业务需求设置策略(policy)。

RabbitMQ介绍及windows下安装使用

创建Virtual Hosts

设置不同角色对于虚拟路径的权限,这样可以让不同的角色管理不同的虚拟路径,并且有相应权限:

添加Virtual Hosts(可以理解成一个数据库,类似于mysql、oracle之类的)
RabbitMQ介绍及windows下安装使用

添加成功后,点击Name“/jack”设置权限:


RabbitMQ介绍及windows下安装使用


回到“Users”选项下,可以看到jack的权限:

RabbitMQ介绍及windows下安装使用

以上就是RabbitMQ的安装和初始化操作。

参考:RabbitMQ原理与相关操作