您现在的位置是:主页>文章>RabbitMQ介绍 网站首页

RabbitMQ介绍

1.RabbitMQ介绍 

        RabbitMQ:是采用Erlang实现的给予AMQP协议标准的消息队列,建立在Erlang OTP平台上。

        安装顺序如下:

        1:http://www.erlang.org/downloads,下载Erlang OTP安装包。

        2:http://www.rabbitmq.com/install-windows.html,下载rabbitmq安装包。

2. AMQP messaging 中的基本概念 

图片描述


  • Broker: 接收和分发消息的应用,RabbitMQ Server就是Message Broker。
  • Virtual host: 出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概念。当多个不同的用户使用同一个RabbitMQ server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等。
  • Connection: publisher/consumer和broker之间的TCP连接。断开连接的操作只会在client端进行,Broker不会断开连接,除非出现网络故障或broker服务出现问题。
  • Channel: 如果每一次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销将是巨大的,效率也较低。Channel是在connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯,AMQP method包含了channel id帮助客户端和message broker识别channel,所以channel之间是完全隔离的。Channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销。
  • Exchange: message到达broker的第一站,根据分发规则,匹配查询表中的routing key,分发消息到queue中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)。
  • Queue: 消息最终被送到这里等待consumer取走。一个message可以被同时拷贝到多个queue中。
  • Binding: exchange和queue之间的虚拟连接,binding中可以包含routing key。Binding信息被保存到exchange中的查询表中,用于message的分发依据。

3.Exchange类型 

Exchange有多种类型,最常用的是Direct/Fanout/Topic三种类型。

Direct 


Message中的“routing key”如果和Binding中的“binding key”一致, Direct exchange则将message发到对应的queue中。
Fanout 

每个发到Fanout类型Exchange的message都会分到所有绑定的queue上去。


Topic

根据routing key,及通配规则,Topic exchange将分发到目标queue中。
Routing key中可以包含两种通配符,类似于正则表达式:
“#”通配任何零个或多个word
“*”通配任何单个word

4.常用命令

启动web管理工具:安装目录的sbin 目录下 rabbitmq-plugins.bat enable rabbitmq_management

暂停服务:net stop RabbitMQ

开启服务:net start RabbitMQ

查看已有用户:rabbitmqctl.bat list_users

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

设置用户为超级管理员 :rabbitmqctl.bat set_user_tags username administrator

修改密码:rabbitmqctl change_password userName newPassword

删除用户:rabbitmqctl.bat delete_user username

权限设置

按照官方文档,用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。我们配置权限会影响到exchange、queue的声明和删除。

我们配置权限会影响到exchange、queue的声明和删除。

读写权限影响到从queue里取消息、向exchange发送消息以及queue和exchange的绑定(binding)操作。

例如: 将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据需要具有queue的可读权限

权限相关命令为:

(1) 设置用户权限

rabbitmqctl  set_permissions  -p  VHostPath  User  ConfP  WriteP  ReadP

(2) 查看(指定hostpath)所有用户的权限信息

rabbitmqctl  list_permissions  [-p  VHostPath]

(3) 查看指定用户的权限信息

rabbitmqctl  list_user_permissions  User

(4)  清除用户的权限信息

rabbitmqctl  clear_permissions  [-p VHostPath]  User

(1) 超级管理员(administrator)

可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

(2) 监控者(monitoring)

可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

(3) 策略制定者(policymaker)

可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。

(4) 普通管理者(management)

仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

(5) 其他的

无法登陆管理控制台,通常就是普通的生产者和消费者。

5.参考文档

https://www.cnblogs.com/frankyou/p/5283539.html

https://www.cnblogs.com/diegodu/p/4971586.html

          


Top