如果你做分布式项目就会用到消息队列,今天要介绍的队列RabbitMQ
RabbitMQ
RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX,持久化。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现很不错。
需要了解到的概念:
方法 | 介绍 |
---|---|
Broker | 简单来说就是消息队列服务器实体。 |
Exchange | 消息交换机,它指定消息按什么规则,路由到哪个队列 |
Queue | 消息队列载体,每个消息都会被投入到一个或多个队列 |
Binding | 绑定,它的作用就是把exchange和queue按照路由规则绑定起来 |
Routing Key | 路由关键字,exchange根据这个关键字进行消息投递 |
vhost | 虚拟主机,一个broker里可以开设多个vhost用作不同用户的权限分离 |
producer | 消息生产者,就是投递消息的程序 |
consumer | 消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务 |
channel | 消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务 |
如何使用,使用的流程是怎样的?
1.客户端连接到消息队列服务器,打开一个channel。
2.客户端声明一个exchange,并设置相关属性。
3.客户端声明一个queue,并设置相关属性。
4.客户端使用routing key,在exchange和queue之间建立好绑定关系。
5.客户端投递消息到exchange。
6.exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。
1、安装Erlang
下载地址:https://www.erlang.org/downloads
本文选择 OTP 23.0 Windows 64-bit Binary File (90666409)
设置环境变量,新建ERLANG_HOME
修改环境变量path,增加Erlang变量至path
%ERLANG_HOME%\bin
cmd输入erl出现下图证明Erlang 安装完成
2.安装RabbitMQ
exe文件地址:
http://www.rabbitmq.com/install-windows.html
解压缩安装地址:
https://www.rabbitmq.com/install-windows-manual.html
设置环境变量,新建RABBITMQ_SERVER
修改环境变量path,增加rabbitmq变量至path
%RABBITMQ_SERVER%\sbin
切换至C:\Program Files\rabbitmq_server-3.7.7\sbin目录下,输入rabbitmqctl status
说明RabbmitMQ未启动,继续
安装插件,命令:rabbitmq-plugins.bat enable rabbitmq_management,出现如下
输入命令:rabbitmq-server.bat
rabbitmq启动成功,浏览器中http://localhost:15672
默认账号密码guest guest
进入RabbitMQ管理控制台:
至此就算在windows下安装成功了
RabbitMQ常用的命令
启动监控管理器:rabbitmq-plugins enable rabbitmq_management
关闭监控管理器:rabbitmq-plugins disable rabbitmq_management
启动rabbitmq:rabbitmq-service start
关闭rabbitmq:rabbitmq-service stop
查看所有的队列:rabbitmqctl list_queues
清除所有的队列:rabbitmqctl reset
关闭应用:rabbitmqctl stop_app
启动应用:rabbitmqctl start_app
用户和权限设置(后面用处)
添加用户:rabbitmqctl add_user username password
分配角色:rabbitmqctl set_user_tags username administrator
新增虚拟主机:rabbitmqctl add_vhost vhost_name
将新虚拟主机授权给新用户:rabbitmqctl set_permissions -p vhost_name username ‘.’ '.’ ‘.*’
角色说明
none 最小权限角色
management 管理员角色
policymaker 决策者
monitoring 监控
administrator 超级管理员