MQ即消息队列(Message Queue),是一种用于进行异步通信的技术。它允许应用程序异步地向队列中发送消息,而不需要立即等待接收方处理完毕。MQ将消息缓存在队列中,等待消费者进行处理
RabbitMQ是一个开源的消息队列中间件,它实现了 AMQP(Advanced Message Queuing Protocol)协议,并提供了一套强大的消息传递机制。它是由Erlang语言编写的,具有高性能、可靠性和可扩展特性
异步通讯
在分布式系统中,不同的服务可能需要共享数据,通过使用消息队列,可以将数据更新操作以消息形式广播到相关服务中,确保数据的一致性和同步性发送方可以将消息发送到消息队列中,而无需等待接收方的即时响应,可以提高系统的响应速度和吞吐量,并解耦发送方和接收方之间的依赖关系
系统解耦
在分布式系统中,多个系统之间,不需要直接交互,通过消息进行业务流转
削峰填谷
在高并发场景下,消息队列可以用于平衡系统的负载。将请求放入消息队列,根据系统的处理能力逐渐消费消息,避免了突发请求对系统造成的压力,实现了削峰填谷的效果
数据同步
在分布式系统中,不同的服务可能需要共享数据,通过使用消息队列,可以将数据更新操作以消息形式广播到相关服务中,确保数据的一致性和同步性
日志处理
将系统的日志信息发送到消息队列,消费者可以独立地处理和存储日志,提供了可靠的日志收集和分析能力
任务调度
将任务放入消息队列中,消费者根据自身的处理能力从队列中获取任务并执行。这种方式可以实现任务的异步执行、提高系统的可伸缩性,同时保证任务的可靠性
RabbitMQ是使用Erlang语言开发的,所以要先下载安装Erlang
下载时注意版本兼容性问题:Rabbit Erlang 版本要求
这边我用最新的版本为大家讲解~
Erlang官网
OTP Versions Tree,速度会快很多
# 在根目录创建software文件夹 [root@localhost ~]# mkdir software # 进入文件夹,用xftp将Erlang的安装包放到该文件夹下,好管理 [root@localhost ~]# cd software # 安装Erlang之前,需要下载一些依赖包 [root@localhost software]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel # 解压文件Erlang文件夹 [root@localhost software]# tar -zxvf otp-src_26.0.2.tar.gz # 进入解压后的文件夹 [root@localhost software]# cd otp-OTP-26.0.2/ # 配置Erlang [root@localhost otp-OTP-26.0.2]# ./configure # 编译Erlang(过程可能有点长,如有问题,ctrl + z,重新在执行一遍吗,make) make # 安装 make install
验证是否安装成功, 输入:erl,如果进入了编程命令行则表示安装成功,退出按 ctrl + z
RabbitMQ下载网址
# 将压缩包放在software文件夹下,解压到/usr/local 文件夹下 [root@localhost software]# tar -xvf rabbitmq-server-generic-unix-3.12.2.tar.xz -C /usr/local/ # 进入 /usr/local/rabbitmq_server-3.12.2/ 文件夹 [root@localhost software]# cd /usr/local/rabbitmq_server-3.12.2/ # 进入 sbin/ 文件夹,这个文件夹下,就是RabbitMQ 所有的功能 [root@localhost rabbitmq_server-3.12.2]# cd sbin/ # 启动RabbitMQ 服务(-detached:后台启动(默认前台启动)) [root@localhost sbin]# ./rabbitmq-server -detached # 查看RabbitMQ 服务状态 [root@localhost sbin]# ./rabbitmqctl status # 停止RabbitMQ 服务状态 [root@localhost sbin]#./rabbitmqctl shutdown # 配置PATH 环境变量,这样可以在全局使用rabbit的命令,不用局限在rabbitmq的文件夹下 vi +$ /etc/profile # +$可以直接定位到文件的最后一行 RABBIT_HOME=/usr/local/rabbitmq_server-3.12.2 # 建议直接复制,注意路径 PATH=$PATH:$RABBIT_HOME/sbin export RABBIT_HOME PATH # 刷新/etc/profile [root@localhost /]# source /etc/profile # 测试是否配置成功,如果运行成功,就代表配置成功,反之,可能配置的文件路径有问题 cd / rabbitmq-server -detached # 启动服务 rabbitmqctl status # 查看服务状态 rabbitmqctl shutdown # 关闭服务
用户管理包括增加用户,删除用户,查看用户列表,修改用户密码
rabbitmqctl list_users # 常看当前用户列表 rabbitmqctl add_user admin root # 新增用户(设置账号、密码) rabbitmqctl set_user_tags admin administrator # 设置用户(admin)角色为:administrator rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" # 设置用户的权限 rabbitmqctl list_permissions # 查看用户的参数
启用Web 插件
Rabbitmq有web管理后台,这个管理后台是以插件的方式提供的,启动后台web管理功能
rabbitmq-plugins list # rabbitmq 插件列表 rabbitmq-plugins enable rabbitmq_management # 启用web控制台 rabbitmq-plugins disable rabbitmq_management # 禁用web控制台
关闭防火墙
systemctl status firewalld # 查看防火墙状态 systemctl stop firewalld # 关闭防火墙,服务器重启之后会失效 systemctl disable firewalld # 防火墙置为不可用,服务器重启后,依然是不可用
访问 Web控制台
输入:ip a ,查看自己的主机
输入:rabbitmqctl statis,查看rabbitmq的端口
打开浏览器,输入主机:端口,如:http://192.168.198.132:15672/
账号:admin
密码:root
账号、密码就是上面创建角色那一步设置的 2.3