基本概念
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可以隔离同一个连接中的不同交互内容。
消息投递到队列的整个过程大致如下:
- 客户端连接到消息队列服务器(broker),打开一个channel。
- 客户端声明一个exchange,并设置相关属性。
- 客户端声明一个queue,并设置相关属性。
- 客户端使用routing key,建立exchange与queue之间的绑定关系。
- 客户端把消息投递给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 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等。
单击Admin选项卡,可以创建用户,user1是新增的用户,可以看到virtual hosts是No access的,可以点user1进去配置
用户角色有下面几种:
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/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