zoukankan      html  css  js  c++  java
  • 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原理与相关操作

  • 相关阅读:
    Java实现 LeetCode 189 旋转数组
    Java实现 蓝桥杯 算式最大值
    Java实现 蓝桥杯 算式最大值
    Java实现 蓝桥杯 算式最大值
    Java实现 神犇的悲惨一生
    编译Boost 详细步骤 适用 VC6 VS2003 VS2005 VS2008 VS2010
    boost:asio编译
    VS2008下编译BOOST 1.39的ASIO库
    Boost下载安装编译配置使用指南
    Boost下载安装编译配置使用指南(含Windows和Linux
  • 原文地址:https://www.cnblogs.com/peterYong/p/9887817.html
Copyright © 2011-2022 走看看