目录
基本概念
RabbitMQ简介
RabbitMQ是一个开源的消息中间件,可在不同应用之间共享数据,采用Erlang语言编写,基于AMQP协议。
RabbitMQ的优点
- 高性能、高稳定性
- 高可靠性,提供可靠的消息投递,保证数据不丢失
- 功能强大、丰富
RabbitMQ高性能的原因:Erlang可以做到和原生socket一样的低延迟。
AMQP
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议。AMQP只是一个规范,用来统一标准。
AMQP的特性
- 定义的是底层消息传递协议,跨平台、跨语言
- 定义了5种交换类型direct,fanout,topic,headers,system
- 可实现高性能的经典消息队列,支持消息的循环、存储、转发
- 支持长周期消息传递、支持事务(跨消息队列)
AMQP的核心概念
- Server:又称为Broker,接受客户端的连接,实现AMQP实体服务
- Channel:进行消息读写的网络信道,Broker可建立多个Channel,一个Channel即一个会话任务。
- Message:消息,应用程序、Broker之间传递的数据,由Properties、Body两部分组成,Properties对消息进行修饰,比如设置消息的优先级、延时投递等,Body是消息内容。
- Virtual host:虚拟主机,用于实现逻辑隔离
- Exchange:交换机,接收消息,再根据路由键(Routing Key)转发消息到对应的Queue中
- Queue:消息队列,暂时存储消息并将消息转发给消息消费者
- Routing Key:路由键,用于绑定Queue、Exchange
一个Virtual host中可以有多个Exchange、Queue,一个Exchange可以绑定多个Queue,一个Queue也可以被多个Exchange绑定,接收多个Exchange转发的消息。
RabbitMQ整体架构(AMQP协议模型)
消息生产者、消费者都是RabbitMQ Client。一个Exchange可以绑定多个Queue,根据Routing Key确定要投放的Queue,可以向多个Queue投递消息。
消息消费者监听Queue,监听的Queue有消息进来,就处理消息。
rabbitmq是用erlang写的,依赖erlang,需要先安装、配置erlang的运行环境。
rabbitmq对erlang版本有严格要求,下载erlang时要注意版本。
win版安装
rabbitmq下载exe或zip,erlang下载exe
erlang环境配置
执行erlang.exe,新建环境变量 ERLANG_HOME,值是erlang主目录。
如果是rabbitmq.exe方式,可以不用配置环境变量。
安装rabbitmq(exe方式)
执行rabbitmq.exe,会自动安装为服务,并且已经启动。
安装后cd到rabbitmq安装目录的sbin下,启用控制台(web界面)
rabbitmq-plugins enable rabbitmq_management
浏览器访问 localhost:15672 ,用户名、密码都是 guest。
安装rabbitmq(zip方式)
解压后cd到rabbitmq的sbin下,启用控制台(web界面)
rabbitmq-plugins enable rabbitmq_management
双击rabbitmq-server.bat启动,关闭窗口停止。
linux版安装
rabbitmq、erlang都下载rpm,会自动配置环境变量,更方便。
安装
#安装erlang的依赖
yum install epel-release unixODBC unixODBC-devel SDL
#安装erlang
yum install esl-erlang_22.2.2-1~centos~8_amd64.rpm
#安装rabbitmq,默认安装目录 /usr/lib/rabbitmq,自动安装为服务但没有启动、没有设置开机自启
yum install rabbitmq-server-3.8.3-1.el8.noarch.rpm
#启用控制台插件
cd /usr/lib/rabbitmq/bin
rabbitmq-plugins enable rabbitmq_management
#防火墙开放5672、15672端口。5672是rabbitmq接收、投递消息(amqp)使用的端口,15672是rabbitmq控制台使用的端口,25672是集群节点间通信使用的端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
修改用户名、密码
不管是exe、zip、rpm,配置文件都是rabbitmq目录下的lib/rabbitmq_server/ebin/rabbit.app。如果使用源码包自己编译安装,需要自己新建配置文件rabbitmq.config。
#修改配置文件
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.3/ebin
vim rabbit.app
配置文件时json格式,默认的用户名、密码都是guest,且guest是admin账号。loopback即回环(127.0.0.1|localhost),默认把guest账号添加到了loopback_users默认添加了guest账号,即此账号只能在本地机器上访问控制台。
根据需要修改用户名、密码,不要添加到loopback_users中。
如果是在启动rabbitmq后修改的配置文件,需要重启rabbitmq或重新加载配置文件才会生效。
当然也可以直接在控制台中添加、修改用户信息。
启动、停止
service rabbitmq-server start
service rabbitmq-server stop
service rabbitmq-server restart
#查看rabbitmq server的状态
service rabbitmq-server status
#重新加载配置
service rabbitmq-server reload
#或者
systemctl start rabbitmq-server
systemctl stop rabbitmq-server
systemctl restart rabbitmq-server
systemctl status rabbitmq-server
浏览器通过 ip:15672 访问rabbitmq控制台。