From 84c2d06b0c69d869f93fa2517300fb269e4b6807 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 20 May 2025 14:35:07 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E4=BB=B2=E8=A3=81=E9=98=9F?= =?UTF-8?q?=E5=88=97=E5=AE=8C=E6=88=90;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mq-demo/ReadMe.md | 50 ++++++++++++++++++ mq-demo/images/image-20250520141530322.png | Bin 0 -> 8506 bytes mq-demo/images/image-20250520141821885.png | Bin 0 -> 31623 bytes .../listener/ClusterEnvironmentListener.java | 8 +++ .../mq/mqdemo/ClusterEnvironmentTest.java | 11 ++++ 5 files changed, 69 insertions(+) create mode 100644 mq-demo/images/image-20250520141530322.png create mode 100644 mq-demo/images/image-20250520141821885.png diff --git a/mq-demo/ReadMe.md b/mq-demo/ReadMe.md index 2eae681..5ab7214 100644 --- a/mq-demo/ReadMe.md +++ b/mq-demo/ReadMe.md @@ -1645,3 +1645,53 @@ bunny: **路由键:**routing.key.cluster.test ![image-20250520105149567](./images/image-20250520105149567.png) + +## 集群中的队列 + +### 镜像队列 + +最新版本中已经退出历史舞台了,就不说了。 + +### 仲裁队列 + +当我们在集群中创建队列时,如【集群环境的连接】那一节,可以看到当前的队列是位于,第一个节点上的。如果这时候服务器宕机或者其他情况,这时这个节点上数据没了,其它j节点时访问不到的;我们理想的情况是,如果一台服务器宕机,这台服务器上的所有内容在别的节点上都是可以看到的。 + +![image-20250520141530322](./images/image-20250520141530322.png) + +#### 创建仲裁队列 + +**交换机:**exchange.quorum.test + +**队列:**queue.quorum.test + +**l路由键:**routing.key.quorum.test + +![image-20250520141821885](./images/image-20250520141821885.png) + +#### 测试Code + +**生产者** + +```java +/* 仲裁队列发送消息 */ +@Test +void clusterQuorumTest2() { + final String EXCHANGE = "exchange.quorum.test"; + final String ROUTING_KEY = "routing.key.quorum.test"; + + for (int i = 0; i <= 10; i++) { + rabbitTemplate.convertAndSend(EXCHANGE, ROUTING_KEY, "仲裁队列发送消息-" + i); + } +} +``` + +**消费者** + +```java +/* 仲裁队列监听 */ +@RabbitListener(queues = "queue.quorum.test") +public void processMessage(String dataString, Channel channel, Message message) throws IOException, InterruptedException { + log.info("<<仲裁队列监听下消息>>----{}", dataString); + channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); +} +``` diff --git a/mq-demo/images/image-20250520141530322.png b/mq-demo/images/image-20250520141530322.png new file mode 100644 index 0000000000000000000000000000000000000000..037915ffe468c216cf6f3700214ccf11a3950c8c GIT binary patch literal 8506 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 XV%%fx9qk5^l>;&oisBWbhJpVd5!AUs literal 0 HcmV?d00001 diff --git a/mq-demo/src/main/java/cn/bunny/mq/mqdemo/mq/listener/ClusterEnvironmentListener.java b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/mq/listener/ClusterEnvironmentListener.java index 035ac40..74d5761 100644 --- a/mq-demo/src/main/java/cn/bunny/mq/mqdemo/mq/listener/ClusterEnvironmentListener.java +++ b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/mq/listener/ClusterEnvironmentListener.java @@ -21,5 +21,13 @@ public class ClusterEnvironmentListener { @RabbitListener(queues = "queue.cluster.test") public void processMessagePriority(String dataString, Channel channel, Message message) throws IOException, InterruptedException { log.info("<<集群环境下消息>>----{}", dataString); + channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); + } + + /* 仲裁队列监听 */ + @RabbitListener(queues = "queue.quorum.test") + public void processMessage(String dataString, Channel channel, Message message) throws IOException, InterruptedException { + log.info("<<仲裁队列监听下消息>>----{}", dataString); + channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } } diff --git a/mq-demo/src/test/java/cn/bunny/mq/mqdemo/ClusterEnvironmentTest.java b/mq-demo/src/test/java/cn/bunny/mq/mqdemo/ClusterEnvironmentTest.java index 1ef34e5..d38901e 100644 --- a/mq-demo/src/test/java/cn/bunny/mq/mqdemo/ClusterEnvironmentTest.java +++ b/mq-demo/src/test/java/cn/bunny/mq/mqdemo/ClusterEnvironmentTest.java @@ -20,4 +20,15 @@ public class ClusterEnvironmentTest { "集群环境下消息-" + i); } } + + /* 仲裁队列发送消息 */ + @Test + void clusterQuorumTest2() { + final String EXCHANGE = "exchange.quorum.test"; + final String ROUTING_KEY = "routing.key.quorum.test"; + + for (int i = 0; i <= 10; i++) { + rabbitTemplate.convertAndSend(EXCHANGE, ROUTING_KEY, "仲裁队列发送消息-" + i); + } + } }