第一章 rabbitmq1.1 rabbitmq简介1.1.1 rabbitmqrabbitmq是一款基于AMQP协议实现的消息中间件, 用于系统模块之间通信, 具体有高可用性, 易扩展以及支持消息持久化的特点1.1.2 AMQP协议AMQP协议是一个提供统一消息服务的应用层的消息队列协议1.2 rabbitmq的组件生产者: 消息的生产者, 向rabbitmq交换机推送消息的客户端程序交换机: 接收生产者的消息, 并将消息添加到rabbitmq的队列消息队列: 用来保存消息, 是消息的容器, 一个消息可以添加到多个队列绑定: 表示交换机与消息队列之间的关联关系vhost(虚拟主机): 用于实现资源隔离的容器, 每个虚拟主机都有独立的交换机, 队列, 用户的信息, rabbitqm的默认vhost是根broker(服务实例): 是rabbitmq服务器本身, 包含虚拟主机, 交换机, 队列等信息connection(连接): 是rabbitmq与系统模块之间建立的连接channel(信道): 用于消息的传递consumer(消费者): 消息的接收方,表示从队列中消费消息1.3 rabbit的工作原理生产者将消息发送给rabbitmq的交换机交换机收到消息, 根据路由键, 将消息发送给队列队列接收到交换机的消息, 并将其推送给消费者消费者收到消息后, 向对列发送ack队列接收到ack后, 会删除队列中的该消息第二章 部署rabbitmq集群2.1 rabbitmq集群2.1.1 集群工作原理rabbitmq集群会启动erlang节点, 并基于该节点实现rabbitmq集群之间各个节点的连接, 在连接过程中需要保证每个节点的erlangcookie相同, 才能连接成功2.2.2 集群节点分类内存节点磁盘节点注意:rabbitmq的每个节点都是平等的, 都会进行消息的接收, 存储与发送磁盘节点支持数据的持久化, 防止消息的丢失2.2.3 集群分类普通模式: 集群中每个节点的队列结构都相同, 但是消息的实体在接收时, 仅会存储在一个节点上, 当其他节点接收到该消息的消费请求后, 存储该消息的节点会把该消息推送给当前接收请求的节点, 之后消费者才会拿到该消息镜像模式: 集群中每个节点的消费队列互为镜像, 从而实现消息在各个节点的主动同步2.2 部署rabbbitmq集群环境准备192.168.255.130 rmq1192.168.255.132 rmq2192.168.255.133 rmq3配置域名解析cat /etc/hosts EOF192.168.255.130 rmq1192.168.255.132 rmq2192.168.255.133 rmq3EOF设置主机名#130主机hostnamectl set-hostname rmq1su#132主机hostnamectl set-hostname rmq2su#133主机hostnamectl set-hostname rmq3su安装erlang与rabbitmq#配置yumvim /etc/yum.repos.d/erlang.repo[rabbiterlang]namerabbiterlangbaseurlhttps://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7gpgcheck1gpgkeyhttps://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.ascrepo_gpgcheck0enabled1#安装yum -y install erlang rabbitmq配置rabbitmqcp /usr/share/doc/rabbitmq-server-3.7.13/rabbitmq.config.example /etc/rabbitmq/rabbitmq.configvim /etc/rabbitmq/rabbitmq.conf{loopback_users, []}启动rabbitmq的web管理服务rabbitmq-plugins enbale rabbitmq_management统一cookie文件#将rmq1的coookie文件拷贝到其他两个节点scp /var/lib/rabbitmq/.erlang.cookie root192.168.255.132:/var/lib/rabbitmq/scp /var/lib/rabbitmq/.erlang.cookie root192.168.255.133:/var/lib/rabbitmq/启动服务, 关闭rmq2与rmq3节点#所用节点相同操作systemctl start rabbirmqsystemctl enbale rabbirmq#节点2节点3停止运行rabbitmq, 开启独立运行rabbitmqctl stoprabbitmqctl-server -detached#查看各个节点是否正常启动rabbitctl cluster_status提加用户#每个主机都一样#创建用户admin, 密码adminrabbitmqctl add_user admin admin#为用户授权, admin用户在vhost中拥有读 写 执行权限rabbirmqctl set_permissions -p “/” admin “. .” “.*”#为用户分配rabbitmq的管理员角色rabbitmqctl set_user_tags admin administrator测试访问http://域名:15672adminadmin组建磁盘节点集群(支持数据的持久化)#将节点2,节点3加入节点1#节点2,3操作相同#停止应用rabbitmqctl stop_app#加入rmq1rabbitmqctl join_cluster rabbitrmq1rabbitmqctl start_app验证集群信息rabbitmqctl cluster_status
rabbirmq消息中间件
发布时间:2026/5/24 9:16:17
第一章 rabbitmq1.1 rabbitmq简介1.1.1 rabbitmqrabbitmq是一款基于AMQP协议实现的消息中间件, 用于系统模块之间通信, 具体有高可用性, 易扩展以及支持消息持久化的特点1.1.2 AMQP协议AMQP协议是一个提供统一消息服务的应用层的消息队列协议1.2 rabbitmq的组件生产者: 消息的生产者, 向rabbitmq交换机推送消息的客户端程序交换机: 接收生产者的消息, 并将消息添加到rabbitmq的队列消息队列: 用来保存消息, 是消息的容器, 一个消息可以添加到多个队列绑定: 表示交换机与消息队列之间的关联关系vhost(虚拟主机): 用于实现资源隔离的容器, 每个虚拟主机都有独立的交换机, 队列, 用户的信息, rabbitqm的默认vhost是根broker(服务实例): 是rabbitmq服务器本身, 包含虚拟主机, 交换机, 队列等信息connection(连接): 是rabbitmq与系统模块之间建立的连接channel(信道): 用于消息的传递consumer(消费者): 消息的接收方,表示从队列中消费消息1.3 rabbit的工作原理生产者将消息发送给rabbitmq的交换机交换机收到消息, 根据路由键, 将消息发送给队列队列接收到交换机的消息, 并将其推送给消费者消费者收到消息后, 向对列发送ack队列接收到ack后, 会删除队列中的该消息第二章 部署rabbitmq集群2.1 rabbitmq集群2.1.1 集群工作原理rabbitmq集群会启动erlang节点, 并基于该节点实现rabbitmq集群之间各个节点的连接, 在连接过程中需要保证每个节点的erlangcookie相同, 才能连接成功2.2.2 集群节点分类内存节点磁盘节点注意:rabbitmq的每个节点都是平等的, 都会进行消息的接收, 存储与发送磁盘节点支持数据的持久化, 防止消息的丢失2.2.3 集群分类普通模式: 集群中每个节点的队列结构都相同, 但是消息的实体在接收时, 仅会存储在一个节点上, 当其他节点接收到该消息的消费请求后, 存储该消息的节点会把该消息推送给当前接收请求的节点, 之后消费者才会拿到该消息镜像模式: 集群中每个节点的消费队列互为镜像, 从而实现消息在各个节点的主动同步2.2 部署rabbbitmq集群环境准备192.168.255.130 rmq1192.168.255.132 rmq2192.168.255.133 rmq3配置域名解析cat /etc/hosts EOF192.168.255.130 rmq1192.168.255.132 rmq2192.168.255.133 rmq3EOF设置主机名#130主机hostnamectl set-hostname rmq1su#132主机hostnamectl set-hostname rmq2su#133主机hostnamectl set-hostname rmq3su安装erlang与rabbitmq#配置yumvim /etc/yum.repos.d/erlang.repo[rabbiterlang]namerabbiterlangbaseurlhttps://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7gpgcheck1gpgkeyhttps://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.ascrepo_gpgcheck0enabled1#安装yum -y install erlang rabbitmq配置rabbitmqcp /usr/share/doc/rabbitmq-server-3.7.13/rabbitmq.config.example /etc/rabbitmq/rabbitmq.configvim /etc/rabbitmq/rabbitmq.conf{loopback_users, []}启动rabbitmq的web管理服务rabbitmq-plugins enbale rabbitmq_management统一cookie文件#将rmq1的coookie文件拷贝到其他两个节点scp /var/lib/rabbitmq/.erlang.cookie root192.168.255.132:/var/lib/rabbitmq/scp /var/lib/rabbitmq/.erlang.cookie root192.168.255.133:/var/lib/rabbitmq/启动服务, 关闭rmq2与rmq3节点#所用节点相同操作systemctl start rabbirmqsystemctl enbale rabbirmq#节点2节点3停止运行rabbitmq, 开启独立运行rabbitmqctl stoprabbitmqctl-server -detached#查看各个节点是否正常启动rabbitctl cluster_status提加用户#每个主机都一样#创建用户admin, 密码adminrabbitmqctl add_user admin admin#为用户授权, admin用户在vhost中拥有读 写 执行权限rabbirmqctl set_permissions -p “/” admin “. .” “.*”#为用户分配rabbitmq的管理员角色rabbitmqctl set_user_tags admin administrator测试访问http://域名:15672adminadmin组建磁盘节点集群(支持数据的持久化)#将节点2,节点3加入节点1#节点2,3操作相同#停止应用rabbitmqctl stop_app#加入rmq1rabbitmqctl join_cluster rabbitrmq1rabbitmqctl start_app验证集群信息rabbitmqctl cluster_status