MQ全称为MessageQueue,消息队列(MQ)是一种应用程序对应用程序的通讯方法。应用程序经过写和检索出入列队的针对应用程序的数据(消息)来通讯,而无需专用链接来连接它们。
RabbitMQ 是一个由 Erlang 语言开发的 AMQP(高级消息队列协议) 的开源实现。RabbitMQ 属于消息中间件,主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。前端
单一模式
普通模式(默认集群模式)
镜像模式(队列作成镜像队列,存在多个节点)
Rabbitmq的集群节点包括内存节点、磁盘节点,支持消息持久化、也就是数据写在磁盘上。vim
(1)客户端链接到消息队列服务器,打开一个channel。
(2)客户端声明一个exchange,并设置相关属性。
(3)客户端声明一个queue,并设置相关属性。
(4)客户端使用routing key,在exchange和queue之间创建好绑定关系。
(5)客户端投递消息到exchange。
(6)Exchange接收到消息根据消息的key和已经设置的binding,进行消息路由,将消息投递到queues中,应用程序双方就实现了通讯。安全
一个集群中有三台服务器,其中一台使用磁盘模式,另外两台是内存模式。客户端经过前端反向代理去链接两台内存模式服务器。注意将三台服务器都连上互联网并安装软件包。bash
主机名 | 操做系统 | IP地址 | 用途 |
---|---|---|---|
mq01 | CentOS7 | 192.168.37.128 | 磁盘节点 |
mq02 | CentOS7 | 192.168.37.130 | 内存节点 |
mq03 | CentOS7 | 192.168.37.131 | 内存节点 |
++++++三台服务器相同操做++++++
一、关闭防火墙、安全功能服务器
systemctl stop firewalld.service
setenforce 0cookie
二、首先修改三台服务器的主机名和hosts文件网络
hostnamectl set-hostname mq01 bash vim /etc/hosts 192.168.37.128 mq01 192.168.37.130 mq02 192.168.37.131 mq03
三、yum安装软件包app
yum install -y epel-release #epel为扩展软件包
yum install -y rabbitmq-server #rabbitmq软件包ide
四、创建软链接加密
ln -s /usr/lib/rabbitmq/bin/* /usr/bin/
五、查看插件安装状况
rabbitmq-plugins list
六、开启管理服务
rabbitmq-plugins enable rabbitmq_management
七、开启rabbitmq服务
systemctl start rabbitmq-server.service
netstat -ntap |grep 5672
八、查看各自的群集状态
rabbitmqctl cluster_status
mq01
mq02
mq03
九、关闭服务,复制配置文件后开启
systemctl stop rabbitmq-server.service
//隐藏文件,三台配置同样,将磁盘节点上的文件内容复制到其余2台
vim /var/lib/rabbitmq/.erlang.cookie
systemctl start rabbitmq-server.service
++++++如下操做在内存节点上++++++
一、将mq0二、mq03内存节点服务器分别加入到磁盘节点
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@mq01 #加入到磁盘节点
#ram:之内存节点形式添加,不加磁盘形式
rabbitmqctl cluster_status #验证集群状态
mq02
mq03
二、查看mq01磁盘节点服务器的集群状态
rabbitmqctl cluster_status
++++++rabbit图形化操做++++++
一、登陆磁盘节点服务器
http://192.168.37.128:15672/ 默认用户:guest 密码:guest
二、在磁盘节点服务器上建立策略
name: my_ha
pattern: ^a
Apply to : Exchange and queues
definition: ha-mode all
三、查看策略(三台服务器同步)
mq01
mq02
mq03
四、在磁盘节点服务器上增长消息队列
Name: aa
Durabiliy: Durable
Node: rabbit@mq01
Auto delete: No
五、在新建队列中写入消息
mode: 2-persistent
headers: a = 123
properties: id=1
payload: hello,world!
六、查看队列消息