RabbitMQ介绍及windows下安装使用

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 Fileserl10.0.1

 设置环境变量ERLANG_HOME= C:Program Fileserlx.x.x 
      添加到PATH  %ERLANG_HOME%in;

 

安装RabbitMQ

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

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

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

4369 – erlang发现口

5672 –client端通信口

15672 – 管理界面ui端口

25672 – server间内部通信口

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

安装好之后的目录结构为:C:Program FilesRabbitMQ Server abbitmq_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 FilesRabbitMQ Server
abbitmq_server-3.6.5sbin
abbitmq-plugins.bat" enable rabbitmq_management

 

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

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

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

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

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

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

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

(需要添加了 环境变量)

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

 

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

 

eric 后面没有“[administrator]”

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

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

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

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

rabbitmqctl.bat set_user_tags username administrator

再看下结果。

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

 

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

 

管理界面

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

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

 

创建Virtual Hosts

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

添加Virtual Hosts(可以理解成一个数据库,类似于mysql、oracle之类的)

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

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

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

 参考:RabbitMQ原理与相关操作

原文地址:https://www.cnblogs.com/peterYong/p/9887817.html