Centos7安装RabbitMQ
- 系统:centos7(VMware15.5.0)
- erlang-22.0.7-1.el7.x86_64.rpm
- cheese-release-7-1.noarch.rpm
- rabbitmq-server-3.7.18-1.el7.noarch.rpm
- socat-1.7.3.2-2.el7.x86_64.rpm
- 下载并上传上面四个包到/usr/local/software
- 安装Erlang、RabbitMQ
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
yum install -y rabbitmq-server-3.7.18-1.el7.noarch.rpm
默认安装完成后配置文件模板在:/usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example
要复制一份到自己设置的路径下 /usr/local/rabbitmq
cp /usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example /usr/local/rabbitmq/
cd /usr/local/rabbitmq
mv rabbitmq.config.example rabbitmq.config
- 修改rabbitmq.config文件
cd /cd /usr/local/rabbitmq
vim rabbitmq.config
- 启动rabbitmq插件管理
rabbitmq-plugins enable rabbitmq_management
注意:这里如果出错,执行以下命令卸载erlang和rabbitmq,然后重新执行一次上面配置
/usr/lib/rabbitmq/bin/rabbitmqctl stop #卸载前先停止rabbitmq服务
yum list | grep rabbitmq #查看rabbitmq安装的相关列表
yum -y remove rabbitmq-server.noarch #卸载rabbitmq已安装的相关内容
yum list | grep erlang #查看erlang安装的相关列表
#卸载erlang已安装的相关内容
yum -y remove erlang-*
yum remove erlang.x86_64
#删除有关的所有文件
rm -rf /usr/lib64/erlang
rm -rf /var/lib/rabbitmq
rm -rf /usr/local/erlang
rm -rf /usr/local/rabbitmq
- 启动RabbitMQ
chkconfig rabbitmq-server on #添加开机启动 RabbitMQ 服务
systemctl start rabbitmq-server # 启动rabbitmq服务
systemctl restart rabbitmq-server # 重启服务
systemctl stop rabbitmq-server # 停止服务
- 查看服务启动状态
systemctl status rabbitmq-server
- 用默认账号密码(guest)访问地址http://192.168.101.136:15672/出现权限问题
8. 添加一个新的用户
#创建账号
rabbitmqctl add_user root 123456
#设置用户角色:角色可以有:management、monitoring、policymaker、administrator
rabbitmqctl set_user_tags root administrator
#设置用户权限set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
rabbitmqctl set_permissions -p "/" root ".*" ".*" ".*"
#用户 user_admin 具有/vhost1 这个 virtual host 中所有资源的配置、写、读权限
#当前用户和角色
rabbitmqctl list_users
然后使用创建的用户和密码访问http://192.168.101.136:15672
- 这里标注一些vhost的配置
#创建vhost
sudo rabbitmqctl add_vhost {vhost_name}
#删除vhost
sudo rabbitmqctl delete_vhost {vhost_name}
#查看所有vhost
sudo rabbitmqctl list_vhosts name tracing
#为用户提供访问vhost的权限
sudo rabbitmqctl set_permissions -p {vhost_name} {username} ".*" ".*" ".*"
#查看某个vhost提供的权限
sudo rabbitmqctl list_permissions -p {vhost_name}
- 开放15672和5672端口(这里使用iptables)
iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
或者关闭防火墙
#查看防火状态
systemctl status firewalld
service iptables status
#暂时关闭防火墙
systemctl stop firewalld
service iptables stop
#永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
#重启防火墙
systemctl enable firewalld
service iptables restart
#永久关闭后重启
chkconfig iptables on
- rabbitmq安装延迟队列插件
在官网上下载 https://www.rabbitmq.com/community-plugins.html下载插件rabbitmq_delayed_message_exchange,
#把这个插件上传到rabbitmq安装目录的plugins目录
cp rabbitmq_delayed_message_exchange-3.8.0.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.18/plugins
#安装插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
# 重启服务
systemctl restart rabbitmq-server
安装成功后发现创建交换机的type多了x-delayed-message选项
为什么要安装这个插件呢,不是基于死信队列来实现延迟队列吗?因为基于死信队列的延迟队列,如果在消息生产者设置ttl,那么各个不同的消息会在同一个队列中排队,后面已经到了ttl的消息会等待前面的消息到达ttl才能被消费,这是一大bug,所以要基于插件来实现延迟队列