【RabbitMQ】基本概念及安装

基本概念

broker:消息队列服务器的实体,它是一个中间件应用负责接收消息,然后把消息发送给消费者或其他的broker。

exchange:消息交换机,是消息第一个到达的地方,消息通过其指定的路由规则,分发到不同的消息队列(queue)中去。

queue:消息队列,消息最终到达的地方,到达queue的消息即进入等待消费状态,一个消息会被发送到一个或多个queue中。

binding:绑定,其作用为把exchange和queue按路由规则绑定起来,也就是exchange和queue之间的虚拟连接。

routing key:路由关键字,exchange根据这个关键字进行消息投递。

virtual host:虚拟主机,它是对broker的虚拟划分,一般是为了安全考虑,如,可以在一个broker中设置多个虚拟主机,对不同的用户进行权限分离。

connection:连接,生产者、消费者、broker之间的物理网络。

channel:消息通道,用于连接生产者和消费者的逻辑结构,一个连接中可以建立多个channel,每个channel代表一个会话任务,通过channel可以隔离同一个连接中的不同交互内容。

消息投递到队列的整个过程大致如下:

  1. 客户端连接到消息队列服务器(broker),打开一个channel。
  2. 客户端声明一个exchange,并设置相关属性。
  3. 客户端声明一个queue,并设置相关属性。
  4. 客户端使用routing key,建立exchange与queue之间的绑定关系。
  5. 客户端把消息投递给exchange,exchange收到消息后,根据消息的key和设置好的binding进行路由,将消息路由到一个或多个queue里。

exchange有几种类型:

direct:完全根据key进行投递,如,绑定时设置了routing key为abc,那么客户端发送的消息只有设置了key为abc的才会被投递到队列。

topic:对key进行模式匹配然后再投递,可以使用#匹配一个或多个词,*匹配正好一个词,如,abc.#可以匹配abc.aac.ddd。abc.*只能匹配abc.xxx。

fanout:广播模式,消息会投递到所有队列。

 

安装

Erlang安装

因为RabbitMQ是使用Erlang语言实现的, 所以需要安装erlang虚拟机,安装如下:

下载地址:http://www.erlang.org/downloads

官网地址下载慢的话可以从百度云盘下载:https://pan.baidu.com/s/1ShF-xEbBB1vkOgtH2R_Qew

配置环境变量,先试一下不配是否可行
ERLANG_HOME 
D:\erl21.0
path添加%ERLANG_HOME%\bin; 
cmd下用erl -version检测是否配置成功

安装成功后有一个erlang图标,双击可打开命令窗口,可输入erlang命令,erlang命令以“.”结束,如:1+1.

【RabbitMQ】基本概念及安装

RabbitMQ Server安装

下载地址:http://www.rabbitmq.com/download.html

安装完后会自动注册服务,并以默认配置进行启动,注意,安装路径最好不要含有中文。

安装成功后在开始菜单中可以找到所有安装的应用以及插件。

可以点击RabbitMQ Service - start图标启动服务。

环境变量配置:

RABBITMQ_SERVER=D:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.7
PATH=%RABBITMQ_SERVER%\sbin;

命令行输入rabbitmq-service,如果不报错则说明配置成功。

有两种方式配置RabbitMQ,一种是直接通过修改配置文件进行管理,另一种是通过web进行管理,下面介绍web的方式

1、在开始菜单中找到RabbitMQ Command Promt,打开命令窗口

2、输入命令开启管理功能:

rabbitmq-plugins enable rabbitmq_management

如果报错:'rabbitmq-plugins' 不是内部或外部命令,也不是可运行的程序

先检查环境变量是否配置,然后进入%RABBITMQ_SERVER%\sbin 目录以管理员身份运行 rabbitmq-plugins.bat

如果还报错,则以管理员身份启动 rabbitmq-service.bat,然后通过命令窗口重启服务,命令如下:

rabbitmq-service.bat stop

rabbitmq-service.bat install

rabbitmq-service.bat start

3、在启用插件成功后回看到一些提示信息,然后就可以通过 http://server-name:15672(如:http://localhost:15672/)访问了,默认用户名称和密码为guest,guest,进入管理页面后,我们可以看到几个大的Tab。从图中可以看到上面的一些基本概念,如connections、channels、exchanges、queues等。

【RabbitMQ】基本概念及安装

单击Admin选项卡,可以创建用户,user1是新增的用户,可以看到virtual hosts是No access的,可以点user1进去配置

【RabbitMQ】基本概念及安装

用户角色有下面几种:

1)none:不能访问management plugin

2)management:用户可以通过AMQP做任何事外加如下内容:

  • a、列出自己可以登入的virtual hosts
  • b、查看自己virtual hosts中的queues、exchanges及bindings,只能查看不能修改
  • c、查看和关闭自己的channels和connections
  • d、查看有关自己的virtual hosts的全局统计信息,包括其他用户在这些virtual hosts中的活动。

3)polocymaker:包含management所有能做的,另外还可以查看、创建和删除自己的virtual hosts所属的policies和parameters

4)monitoring:包含management所有能做的,另外还可以:

a、列出所有virtual hosts,包括其不能登录的virtual hosts

b、查看其它用户的connections和channels

c、查看节点级别的数据,如memory的使用情况

d、查看所有virtual hosts的全局统计信息

5)administrator:包含policymaker和monitoring所有能做的事情,另外还可以:

a、创建和删除virtual hosts

b、查看、创建和删除users

c、查看、创建和删除permissions

d、关闭其它用户的connections

 

参考资料

官方资料

官网:

http://www.rabbitmq.com/

开发文档:

http://www.rabbitmq.com/documentation.html

http://www.rabbitmq.com/getstarted.html

客户端工具:

http://www.rabbitmq.com/devtools.html

 

其它资料

https://blog.csdn.net/boonya/article/details/64904706

https://blog.csdn.net/column/details/rabbitmq.html

https://blog.csdn.net/column/details/slimina-rabbitmq.html

http://blog.csdn.net/column/details/rabbitmq-arron.html

 

书籍

《RabbitMQ实战指南》2017带目录文字版:https://pan.baidu.com/s/1W2a2vTGKuINIkgCg-tprUQ