RabbitMQ镜像集群搭建及Springboot整合使用

RabbitMQ镜像集群搭建及Springboot整合使用


文章目录

  • RabbitMQ镜像集群搭建及Springboot整合使用
  • 技术选型及版本
  • 一、搭建镜像集群
    • 1、前提准备
    • 2、安装rabbitmq
    • 3、加入集群
    • 4、配置镜像策略
    • 5、注意事项
  • 二、SpringBoot整合rabbitmq集群
    • 1、依赖
    • 2、配置


技术选型及版本

rabbitmq:3.7.17

docker相关知识

springboot项目


一、搭建镜像集群

1、前提准备

准备至少两台主机,可以是真实主机,也可以是虚拟机,并且保证在同一个内网中:
主机1:192.168.111.100
主机2:192.168.111.101
两台主机提前安装好docker备用

2、安装rabbitmq

主机1执行:

docker run -d --hostname rabbit01 --add-host=rabbit02:192.168.111.101 --restart=unless-stopped --name mq01 --net host -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin123 -e RABBITMQ_ERLANG_COOKIE="rabbitmq_cookie" rabbitmq:3.7.17-management

主机2执行:

docker run -d --hostname rabbit02 --add-host rabbit01:192.168.111.100 --restart=unless-stopped --name mq02 --net host -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin123 -e RABBITMQ_ERLANG_COOKIE="rabbitmq_cookie" rabbitmq:3.7.17-management

参数讲解:

-d 容器后台运行
--hostname rabbit01 容器的主机名为 rabbit01
--add-host rabbit02:xxxx  修改容器内部的hosts,添加的集群服务器都需要添加进来
--restart=unless-stopped docker容器重启后重启MQ
--name mq01 容器名为mq01,在宿主机上运行“docker ps”命令时显示的名称
--net host  容器和宿主机共用网络
-p 8072:5672 消息通讯端口
-p 8172:15672 后台管理端口
-e RABBITMQ_ERLANG_COOKIE 设置Erlang Cookie值,此值必须相同
-e RABBITMQ_DEFAULT_USER=admin   登录账号
-e RABBITMQ_DEFAULT_PASS=admin123   登录密码

验证:
访问http://192.168.111.100:15672/ 和 http://192.168.111.101:15672/

3、加入集群

第一台服务器重启为主节点

# 进入docker容器
docker exec -it mq01 /bin/bash
# 停止应用
rabbitmqctl stop_app
# 重置应用
rabbitmqctl reset
# 开启应用
rabbitmqctl start_app
# 查看集群状态
rabbitmqctl cluster_status
# 退出docker容器
exit

第二台服务器加入到主节点

docker exec -it mq02 bash

rabbitmqctl stop_app

rabbitmqctl reset

# rabbit01是第一台主机的主机名,--ram 代表设置为内存节点,不使用则默认为磁盘节点,必须保证集群中至少有一个磁盘节点
rabbitmqctl join_cluster rabbit@rabbit01  或者 rabbitmqctl join_cluster --ram rabbit@rabbit01

rabbitmqctl start_app

rabbitmqctl cluster_status

exit

4、配置镜像策略

在任意一个节点执行:

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

查看策略:

rabbitmqctl list_policies

在其它节点查看策略:

rabbitmqctl list_policies

也可以在管理端进行设置:
RabbitMQ镜像集群搭建及Springboot整合使用_第1张图片
参数讲解:

Name:policy的名称
  Pattern: queue的匹配模式(正则表达式)
  priority:可选参数,policy的优先级
  Definition:镜像定义,包括三个部分ha-mode、ha-params、ha-sync-mode
    ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
      all:表示在集群中所有的节点上进行镜像
      exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
      nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
    ha-params:ha-mode模式需要用到的参数
    ha-sync-mode:进行队列中消息的同步方式,有效值为automatic(自动)和manual(手动)

验证结果:
进入任意一台rabbitmq管理后台,首页查看:
RabbitMQ镜像集群搭建及Springboot整合使用_第2张图片
在任意一台rabbitmq上面增加交换机和队列,另一台会自动同步。

5、注意事项

二、SpringBoot整合rabbitmq集群

1、依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2、配置

spring:  
  rabbitmq:
    addresses: 192.168.111.100:5672,192.168.111.101:5672 #指定client连接到的server的地址,多个以逗号分隔
    password: admin
    username: 123456

你可能感兴趣的:(java,运维,java-rabbitmq,rabbitmq,java)