前言
RabbitMQ是一款使用Erlang语言开发,实现AMQP(高级消息队列协议)的开源消息中间件。RabbitMQ的特点:
- 可靠性。支持持久化,传输确认,发布确认等保证了MQ的可靠性。
- 灵活的分发消息策略。这应该是RabbitMQ的一大特点。在消息进入MQ前由Exchange(交换机)进行路由消息。分发消息策略有:简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式。
- 支持集群。多台RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker。
- 多种协议。RabbitMQ支持多种消息队列协议,比如 STOMP、MQTT 等等。
- 支持多种语言客户端。RabbitMQ几乎支持所有常用编程语言,包括 Java、.NET、Ruby 等等。
- 可视化管理界面。RabbitMQ提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker。
- 插件机制。RabbitMQ提供了许多插件,可以通过插件进行扩展,也可以编写自己的插件。
环境准备:
- 系统版本:CentOS7
- IP:192.168.0.10
- 安装包:
- rabbitmq-server-generic-unix-3.8.9.tar.xz,官网地址:Releases · rabbitmq/rabbitmq-server · GitHub
- erlang安装包:otp_src_23.1.4.tar.gz,Erlang官网下载地址
步骤
安装erlang
- 安装依赖
yum install -y gcc glibc-devel make ncurses-devel openssl-devel xmlto
- 解压安装包
tar xf otp_src_23.1.4.tar.gz cd otp_src_23.1.4
- 预编译 -> 编译 -> 编译安装
# 创建安装目录 mkdir -p /usr/local/erlang # 预编译时如果提示缺少wxwidget什么的,非GUI可忽略 ./configure --prefix=/usr/local/erlang # 因为CPU为4核,故-j4加速编译 make -j4 make install -j4
- 验证
/url/local/erlang/bin/erl 1+1. # 上述正常执行的话,即可退出 halt().
- 配置环境变量:
vim /etc/profile
export PATH=$PATH:/usr/local/erlang/bin
- 环境变量生效
source /etc/profile
安装rabbitmq
- 解压rabbit压缩包到指定目录
tar xf rabbitmq-server-generic-unix-3.8.9.tar.xz -C /usr/local
- (可选操作)将解压后的目录重命名为rabbitmq
- 添加
/usr/local/rabbitmq/sbin
到环境变量中,并source生效 - 启动rabbitmq
rabbitmq-server -detached # 查看rabbitmq服务状态:rabbitmqctl status # 关闭rabbitmq:rabbitmqctl stop
- 安装网页管理插件
mkdir -p /etc/rabbitmq # 启用网页管理插件 rabbitmq-plugins enable rabbitmq_management # 访问 http://192.168.0.10:15672,默认用户guest,密码guest
- 配置远程访问控制
# 添加用户 rabbitmqctl add_user user233 pwd233 # 添加所有权限 rabbitmqctl set_permissions -p "/" user233 ".*" ".*" ".*" # 修改用户角色为管理员 rabbitmqctl set_user_tags user233 administrator # 网页登录测试
其它
安装插件RabbitMQ Delayed Message Plugin
- 到github上下载ez格式的插件包,github地址
- 将ez格式的文件放到
/usr/local/rabbitmq/plugins/
中 - 执行
rabbitmq-plugins list
,找到插件名(一般是rabbitmq_delayed_message_exchange
,瞅一眼确认一下) - 启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
踩坑记录
- 网页管理页面无法登录,页面底部显示
ReferenceError: disable_stats is not defined ReferenceError "rabbitmq"
- Edge浏览器问题,换个浏览器试试。