Java17 --- RabbitMQ搭建集群

news2025/3/12 12:13:46

目录

一、使用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);
    }

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

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1824760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt MaintenanceTool.exe使用镜像源更新Qt

环境:Windows11,Qt6.5,新版的MaintenanceTool.exe linux环境类似,mac环境可以看官方文档。 cmd命令窗口:切换到MaintenanceTool.exe所在目录,可以用“D:”切换到D盘,“cd xxxx”切换到xxxx目录…

欢乐钓鱼大师通关必备秘籍!云手机游戏辅助!

《欢乐钓鱼大师》是一款让玩家沉浸在放松钓鱼乐趣中的手机游戏。不同于传统钓鱼游戏,它融合了收集、升级和竞技等元素,让每位玩家可以根据自己的喜好和目标来发展钓鱼技艺。本攻略将为您详细介绍如何在游戏中迅速提升实力,达到通关的最高境界…

upload-labs第十二关教程

upload-labs第十二关教程 一、源代码分析代码审计 二、绕过分析截断绕过magic_quotes_gpc函数介绍关闭magic_quotes_gpc上传eval.png文件使用burpsuite进行抓包修改放包,查看是否上传成功使用中国蚁剑进行连接 一、源代码分析 代码审计 $is_upload false; $msg …

k8s快速上手实操

前言 Kubernetes(简称K8s)是由Google开源的一个用于自动化部署、扩展和管理容器化应用程序的系统。自2014年发布以来,Kubernetes已经迅速成长为容器编排领域的标准,并在全球范围内得到了广泛的采用和认可。 Kubernetes作为现代容…

最新情侣飞行棋高阶羞羞版,解锁私密版情侣小游戏,文末有福利!

今天要跟大家聊聊一种特别有意思的游戏——情侣飞行棋羞羞版。别急着脸红,这可是专为情侣设计的游戏,让你们在轻松愉快的氛围中,增进了解,加深感情。 谈恋爱,不就是两个人在一起,做些有趣的事情吗&#xf…

分布式技术导论 — 探索分析从起源到现今的巅峰之旅(逻辑架构)

探索分析从起源到现今的巅峰之旅 背景介绍技术系列 逻辑架构连接处理层数据缓存层SQL处理层存储引擎逻辑层次的分工 模块执行连接处理层初始化模块核心API模块网络交互模块Client&Server 交互协议模块用户模块案例 访问控制模块案例 连接管理、连接线程和线程管理连接管理模…

数字政协:迈向智慧时代,开启政协工作新篇章

在信息化浪潮席卷全球的今天,数字技术不仅改变了我们的生活方式,也深刻影响着政治生态的变革。其中,“数字政协”的崛起,正是新时代政协工作创新发展的重要标志。那么,什么是数字政协?它又将如何助力政协工…

RAG工作流在高效信息检索中的应用

介绍 RAG(Retrieval Augmented Generation)是一种突破知识限制、整合外部数据并增强上下文理解的方法。 由于其高效地整合外部数据而无需持续微调,RAG的受欢迎程度正在飙升。 让我们来探索RAG如何克服LLM的挑战! LLM知识限制大…

stable diffusion最全插件大全,新手必备指南

Stable diffusion30个必备插件推荐,给我点个赞吧,兄弟们 1,ComfyUI,SD扩展里面直接搜索就行, ComfyUI 是一个基于节点操作的UI界面,玩过建模的更容易学 安装后大概是这样的 评价:comfyui,更适…

LDR6023S:革新USB Type-C接口的完美伴侣

一、引言 随着科技的发展,USB Type-C接口以其高速传输、正反插等特性逐渐取代了传统的USB接口。而在这一背景下,LDR6023S作为一款USB Type-C转音频快充芯片,凭借其卓越的性能和广泛的应用场景,成为了市场上备受瞩目的产品。本文将…

判断两张图片是否相似

判断两张图片是否相似 要判断两张图片是否相似,你可以使用多种方法,其中包括结构相似性指数(SSIM)和 perception hash 等。以下是使用 SSIM 和 perception hash 进行判断的示例代码。 安装必要的包 确保你已经安装了 scikit-im…

远程医疗服务包含哪些服务内容?

在当今数字化时代,远程医疗服务正在迅速崛起,成为医疗保健领域的一项重要创新。通过远程医疗服务,患者可以足不出户就能获得医疗服务。那么远程医疗究竟能提供哪些服务呢?下面我们就来看看。 1. 远程咨询 远程咨询是远程医疗服务的基础&…

深入学习Java `synchronized` 关键字

深入学习Java synchronized 关键字 synchronized关键字通过确保在同一时间只有一个线程可以执行某个代码块,从而防止多个线程同时访问共享资源时发生数据不一致的问题。 修饰方法 当synchronized用于修饰实例方法时,表示当前实例对象是同步锁。这意味…

【C++ 11 新特性】lambda 表达式详解

文章目录 1. 常见 lambda 面试题🖊 1. 常见 lambda 面试题🖊 🍎① 如果⼀个 lambda 表达式作为参数传递给⼀个函数,那这个函数可以使⽤这个 lambda 表达式捕获的变量吗 ? 🐧 函数本身无法直接访问到 lambda表达式捕获…

护眼台灯哪个品牌更好?五款市面主流的护眼台灯款式分享

近年来,护眼台灯的研发和创新不断推进,一些台灯配备了智能化功能,如定时开关机、自动调节光线等,使孩子们能够更好地控制用眼时间和光线环境。护眼台灯哪个品牌更好?一些高端的护眼台灯还采用了纳米光滤镜技术&#xf…

LeetCode | 35.搜索插入位置

这套题可以直接遍历,找到第一个大于target的数并返回其位置即可,但是时间复杂度为 O ( n 2 ) O(n^2) O(n2),题目中明确要求时间复杂度为 O ( l o g n ) O(logn) O(logn),考虑二分查找算法,这道题就是标准的二分查找的一…

Studio One软件最新版下载及详细安装教程

Studio One 6是一款功能丰富、专业级的音乐制作软件,它具备灵活的工作流程和高效的团队协作能力,能帮助用户实现高质量的音乐创作和制作。 智能模板更快的启动,全新的智能模板为你手头的任务提供了必要的工具集,包括基本录制、混音…

RFID技术助力资产信息数字化转型

在当前快速发展的信息化时代,资产信息的数字化转型对企业管理和运营具有重要意义。RFID技术作为一种先进的物联网技术,通过将资产信息全面数字化,实现高效、准确的管理和追踪,极大地提升了企业的运营效率和管理水平。 首先&#x…

Java版+ SaaS应用+接口技术RESTful API 技术开发的智慧医院HIS系统源码 专注医院管理系统研发 支持二开

Java版 SaaS应用接口技术RESTful API WebSocket WebService技术开发的智慧医院HIS系统源码 专注医院管理系统研发 支持二开 医院住院管理系统(Hospital Information System简称HIS)是一门医学、信息、管理、计算机等多种学科为一体的边缘科学&#xff…

进来学习Kubernetes知识点

Kubernetes集群部署 文章目录 Kubernetes集群部署一、Kubernetes概述1.1、什么是Kubernetes1.2、为什么要用Kubernetes 二、Kubernetes组件2.1、Master组件2.2、Node组件 三、Kubernetes资源对象3.1、Pod3.2、Label3.3、Replication Controller3.4、Deployment3.5、Service3.6、…