RabbitMQ
安装Erlang
由于RabbitMQ依赖Erlang, 所以需要先安装Erlang
添加erlang solutions源
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum install erlang
从EPEL源安装(这种方式安装的Erlang版本可能不是最新的,有时候不能满足RabbitMQ需要的最低版本)
启动EPEL源
yum install epel-release
安装erlang
yum install erlang
yum install socat
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
安装时如果遇到下面的依赖错误(缺少socat依赖包)
Error: Package: socat-1.7.2.3-1.el6.x86_64 (epel)
Requires: libreadline.so.5()(64bit)
yum -y install socat
启动操作
systemctl [ status | stop | start | restart ] rabbitmq-server
rabbitmqctl命令
查看当前所有用户
rabbitmqctl list_users
查看默认guest用户的权限
rabbitmqctl list_user_permissions guest
由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户
rabbitmqctl delete_user guest
添加新用户
rabbitmqctl add_user username password
设置用户tag
rabbitmqctl set_user_tags username administrator
赋予用户默认vhost的全部操作权限
rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
查看用户的权限
rabbitmqctl list_user_permissions username
清除用户密码
clear_password
开启web管理接口
RabbitMQ自带web管理界面,只需要启动插件便可以使用。
rabbitmq-plugins enable rabbitmq_management
访问:http://localhost:15672
输入用户名和密码进入web界面
配置文件,将需要自定义的配置添加到对应文件中
/etc/rabbitmq/rabbitmq.config
开启用户远程访问
默认情况下,RabbitMQ的默认的guest用户只允许本机访问,要开启远程访问,只需要将配置文件中的loopback_users列表置为空即可,如下:
{loopback_users, []}
新添加的用户,直接就可以从远程访问,限制远程访问只需要添加用户名到如下列表中,如只允许admin用户本机访问。
{loopback_users, ["admin"]}
rabbitmq常见概念
AMQP 高级消息队列协议advanced message queuing protocol 是rabbitmq使用的消息协议
生产者Producer 发送消息的应用
消费者Consumer 接受消息的应用
队列Queue 存储消息的缓存
消息Message 由生产者通过rabbitmq发送给消费者的信息
连接Connection 连接rabbitmq和应用服务器的TCP连接
通道Channel 连接里的一个虚拟通道,当你通过消息队列发送或者接收消息时,这个操作都是通过通道进行的
交换机Exchange 交换机负责从生产者那里接受消息,并根据交换类型分发到对应的消息队列里,要实现消息的接受,一个队列必须绑定一个交换机
绑定Binding 绑定是队列和交换机的一个关联连接
路由键Routing Key 路由键是供交换机查看并根据键来决定如何分发消息队列的一个键,路由键可以说是消息的目的地址
生产者Producer 发送/发布消息到代理 -> 消费者Consumer 从代理接受消息,即使生产者和消费者不在同一机器上,rabbitmq也可以扮演代理中间件角色
生产者发送消息时,并不是直接把消息发送到队列里,而是使用交换机Exchange来发送