RabbitMQ是由LShift提供的一个Advanced Message Queuing Protocol(AMQP)的开源实现,由以高性能、健壮以及可伸缩性出名的Erlang写成,因此也继承了这些优点
很成熟,久经考验,应用广泛
文档详细,客户端丰富,几乎常用语言都有RabbitMQ的开发库
安装
http://www.rabbitmq.com/install-rpm.html
选择RPM包下载,选择对应平台,本次安装在CentOS 7,其它平台类似。
由于使用了erlang语言开发,所以需要erlang的包。erlang和RabbitMQ的兼容性,参考:https://www.rabbitmq.com/which-erlang.html#compatibility-matrix
下载 rabbitmq-server-3.7.16-1.el7.noarch.rpm、erlang-21.3.8.6-1.el7.x86_64.rpm。socat在CentOS中源中有。
# yum install erlang-21.3.8.6-1.el7.x86_64.rpm rabbitmq-server-3.7.16-1.el7.noarch.rpm
-
文件提取
链接:https://pan.baidu.com/s/1byLYsKdXAEiEYG6n6fpORw
提取码:bmzh -
查看安装的文件
rpm -ql rabbitmq-server
配置
http://www.rabbitmq.com/configure.html#config-location
环境变量
使用系统环境变量,如果没有使用rabbitmq-env.conf中定义环境变量,否则使用缺省值
RABBITMQ_NODE_IP_ADDRESS the empty string, meaning that it should bind to all network interfaces.
RABBITMQ_NODE_PORT 5672
RABBITMQ_DIST_PORT RABBITMQ_NODE_PORT + 20000 内部节点和客户端工具通信用
RABBITMQ_CONFIG_FILE 配置文件路径默认为/etc/rabbitmq/rabbitmq
环境变量文件,可以不配置
工作特性配置文件
rabbitmq.config配置文件
3.7支持新旧两种配置文件格式
1、erlang配置文件格式,为了兼容继续采用
2、sysctl格式,如果不需要兼容,RabbitMQ鼓励使用
这个文件也可以不配置
插件管理
列出所有可用插件
# rabbitmq-plugins list
启动WEB管理插件,会依赖启用其他几个插件
启动服务
systemctl start rabbitmq-server
启动中,可能出现以下的错误
Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces
就是这个文件的权限问题,修改属主、属组为rabbitmq即可
chown rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie: eacces
服务启动成功
用户管理
开始登陆WEB页面,http://yourip:15672
使用guest/guest只能本地登陆,远程登陆会报错
rabbitmqctl
Usage
rabbitmqctl [--node <node>] [--timeout <timeout>] [--longnames] [--quiet] <command> [<command options>]
Users:
add_user Creates a new user in the internal database
authenticate_user Attempts to authenticate a user. Exits with a non-zero code if authentication fails.
change_password Changes the user password
clear_password Clears (resets) password and disables password login for a user
delete_user Removes a user from the internal database. Has no effect on users provided by external backends such as LDAP
list_users List user names and tags
set_user_tags Sets user tags
添加用户:
rabbitmqctl add_user username password
删除用户:
rabbitmqctl delete_user username
更改密码
rabbitmqctl change_password username newpassword
设置权限Tags,其实就是分配组
rabbitmqctl set_user_tags username tag
设置xiaobai用户成为管理员tag后管理
[root@localhost ~]# rabbitmqctl add_user xiaobai xiaobai
Adding user "xiaobai" ...
[root@localhost ~]# rabbitmqctl list_users
Listing users ...
user tags
xiaobai []
guest [administrator]
[root@localhost ~]# rabbitmqctl set_user_tags xiaobai administrator
Setting tags for user "xiaobai" to [administrator] ...
[root@localhost ~]# rabbitmqctl list_users
Listing users ...
user tags
xiaobai [administrator]
guest [administrator]
tag的意义如下
administrator可以管理用户、权限、虚拟主机
基本信息
虚拟主机
/为缺省虚拟主机
缺省虚拟主机,默认只能是guest用户在本机连接。上图新建的用户wayne默认无法访问任何虚拟主机。
Pika库
Pika是纯Python实现的支持AMQP协议的库
pip install pika
RabbitMQ工作原理及应用
工作模式
https://www.rabbitmq.com/getstarted.html
1、队列
这种模式就是最简单的生产者消费者模型,消息队列就是一个FIFO的队列
生产者send.py,消费者receive.py