Java17 --- RabbitMQ搭建集群

目录

一、使用docker搭建集群

二、使用docker安装Haproxy 

三、使用springboot进行测试 

 3.1、创建交换机与队列关系

四、仲裁队列替代镜像队列 

4.1、创建交换机与队列关系


一、使用docker搭建集群

由于contos7环境不能装rabbitmq3.13版本的,采用docker安装避免报错

cd /tmp
# 创建文件
touch rabbitmq.conf

文件内容 

loopback_users.guest = false
listeners.tcp.default = 5672
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@mq1
cluster_formation.classic_config.nodes.2 = rabbit@mq2
cluster_formation.classic_config.nodes.3 = rabbit@mq3
default_user = guest
default_pass = 123456
 

# 创建cookie文件
touch .erlang.cookie
# 写入cookie
echo "Jh98lPqRstUvA43x" > .erlang.cookie
# 修改cookie文件的权限
chmod 600 .erlang.cookie


# 创建目录
mkdir mq1 mq2 mq3

# 拷贝
cp rabbitmq.conf mq1
cp rabbitmq.conf mq2
cp rabbitmq.conf mq3
cp .erlang.cookie mq1
cp .erlang.cookie mq2
cp .erlang.cookie mq3 

创建一个网络

docker network create mq-net

docker run -d --net mq-net \
-v ${PWD}/mq1/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
--name mq1 \
--hostname mq1 \
-p 8071:5672 \
-p 8081:15672 \
rabbitmq:3-management
 
 
docker run -d --net mq-net \
-v ${PWD}/mq2/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
--name mq2 \
--hostname mq2 \
-p 8072:5672 \
-p 8082:15672 \
rabbitmq:3-management
 
 
docker run -d --net mq-net \
-v ${PWD}/mq3/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
--name mq3 \
--hostname mq3 \
-p 8073:5672 \
-p 8083:15672 \
rabbitmq:3-management 

 

二、使用docker安装Haproxy 

 

文件内容:

#文件内容
global
  #日志
  log 127.0.0.1 local0 info
  maxconn 10240
  daemon

defaults
  log global
  mode http
  timeout connect 3000  #连接超时
  timeout client 3000   #客户端超时
  timeout server 3000   #服务器超时
  timeout check 2000    #心跳检测超时

listen  admin_stats
    #监控界面的访问的IP和端口
    bind  0.0.0.0:8084
    #访问协议
    mode        http
    #URI相对地址
    stats uri   /stats
    #统计报告格式
    stats realm     Global\ statistics
    #登陆帐户信息
    stats auth  admin:admin

listen rabbitmq_admin#rabbit的监控页面
    bind    0.0.0.0:8085
    server  rabbit_admin1 172.31.0.110:15673 #自己的rabbitmq前端访问界面
    server  rabbit_admin2 172.31.0.110:15674
    server  rabbit_admin3 172.31.0.110:15675

listen haproxy #这里配置集群负载均衡
  bind 0.0.0.0:5666 #对外提供的端口,访问这个端口就会根据配置的规则对集群下的节点进行相应的负载均衡
  option tcplog
  mode tcp
  balance roundrobin #这是轮询算法,如有需要可以换成其他
  #每次换一个节点进行使用
  server rabbit1 172.31.0.110:5673 check inter 5000 rise 2 fall 2 #rabbitmq后端访问界面
  server rabbit2 172.31.0.110:5674 check inter 5000 rise 2 fall 2
  server rabbit3 172.31.0.110:5675 check inter 5000 rise 2 fall 2

 

运行容器

run -d --name haproxy-rabbitmq -p 8084:8084 -p 5666:5666 -p 8085:8085 -v /opt/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest 

 

负载均衡访问rabbitmq

 

三、使用springboot进行测试 

 3.1、创建交换机与队列关系

 交换机:exchange.cluster

队列:queue.cluster

路由键:cluster

@Test
    public void test9(){

        rabbitTemplate.convertAndSend("exchange.cluster","cluster","测试集群");
    }
@RabbitListener(queues = {"queue.cluster"})
    public void getMessagePriority(String date, Message message, Channel channel) throws Exception {
        //获取当前deliveryTagID
        long deliveryTag = message.getMessageProperties().getDeliveryTag();
        //成功返回ACK信息
        channel.basicAck(deliveryTag,false);
        log.info("接收消息为:" + date);
    }

四、仲裁队列替代镜像队列 

4.1、创建交换机与队列关系

 交换机正常创建:exchange.quorum

队列创建:

 路由键正常绑定

测试代码:

@Test
    public void test10(){

        rabbitTemplate.convertAndSend("exchange.quorum","quorum","测试仲裁队列");
    }
 @RabbitListener(queues = {"queue.quorum"})
    public void getMessageQuorum(String date, Message message, Channel channel) throws Exception {
        //获取当前deliveryTagID
        long deliveryTag = message.getMessageProperties().getDeliveryTag();
        //成功返回ACK信息
        channel.basicAck(deliveryTag,false);
        log.info("接收消息为:" + date);
    }

即使某个节点挂掉,其他依然可以正常工作

 

 

 

 

 

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭鸭老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值