From 74b0a31c1e58fe31fec3840741488e7db9846ab4 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Mon, 19 May 2025 10:20:05 +0800 Subject: [PATCH] =?UTF-8?q?:construction:=20=E7=94=9F=E4=BA=A7=E8=80=85?= =?UTF-8?q?=E7=AB=AF=E6=B6=88=E6=81=AF=E7=A1=AE=E8=AE=A4=E6=9C=BA=E5=88=B6?= =?UTF-8?q?=E7=BB=93=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mq/mqdemo/config/RabbitConfiguration.java | 39 +++++++++++++++++++ .../mq/mqdemo/MqDemoApplicationTests.java | 27 ++++++++++++- 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 mq-demo/src/main/java/cn/bunny/mq/mqdemo/config/RabbitConfiguration.java diff --git a/mq-demo/src/main/java/cn/bunny/mq/mqdemo/config/RabbitConfiguration.java b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/config/RabbitConfiguration.java new file mode 100644 index 0000000..fbe5538 --- /dev/null +++ b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/config/RabbitConfiguration.java @@ -0,0 +1,39 @@ +package cn.bunny.mq.mqdemo.config; + +import jakarta.annotation.PostConstruct; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.core.ReturnedMessage; +import org.springframework.amqp.rabbit.connection.CorrelationData; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.context.annotation.Configuration; + +@Slf4j +@Configuration +@RequiredArgsConstructor +public class RabbitConfiguration implements RabbitTemplate.ConfirmCallback, RabbitTemplate.ReturnsCallback { + + private final RabbitTemplate rabbitTemplate; + + @PostConstruct + public void initRabbitTemplate() { + rabbitTemplate.setConfirmCallback(this); + rabbitTemplate.setReturnsCallback(this); + } + + @Override + public void confirm(CorrelationData correlationData, boolean ack, String cause) { + System.out.println("============correlationData <回调函数打印> = " + correlationData); + System.out.println("============ack <输出> = " + ack); + System.out.println("============cause <输出> = " + cause); + } + + @Override + public void returnedMessage(ReturnedMessage returnedMessage) { + // 发送到队列失败才会走这个 + log.error("消息主体:{}", returnedMessage.getMessage().getBody()); + log.error("应答码:{}", returnedMessage.getReplyCode()); + log.error("消息使用的父交换机:{}", returnedMessage.getExchange()); + log.error("消息使用的路由键:{}", returnedMessage.getRoutingKey()); + } +} diff --git a/mq-demo/src/test/java/cn/bunny/mq/mqdemo/MqDemoApplicationTests.java b/mq-demo/src/test/java/cn/bunny/mq/mqdemo/MqDemoApplicationTests.java index 2ddee5c..ccc0454 100644 --- a/mq-demo/src/test/java/cn/bunny/mq/mqdemo/MqDemoApplicationTests.java +++ b/mq-demo/src/test/java/cn/bunny/mq/mqdemo/MqDemoApplicationTests.java @@ -14,7 +14,10 @@ class MqDemoApplicationTests { @Autowired private RabbitTemplate rabbitTemplate; - /* 测试发送消息 */ + /** + * 1. 测试发送消息,示例代码 + * 2. 测试成功的情况 + */ @Test void publishTest() { String exchangeDirect = RabbitMQMessageListenerConstants.EXCHANGE_DIRECT; @@ -25,4 +28,26 @@ class MqDemoApplicationTests { rabbitTemplate.convertAndSend(exchangeDirect, routingKeyDirect, JSON.toJSONString(bunny)); } + /* 测试失败交换机的情况 */ + @Test + void publishExchangeErrorTest() { + String exchangeDirect = RabbitMQMessageListenerConstants.EXCHANGE_DIRECT; + String routingKeyDirect = RabbitMQMessageListenerConstants.ROUTING_KEY_DIRECT; + rabbitTemplate.convertAndSend(exchangeDirect, routingKeyDirect, "----失败的消息发送----"); + + Bunny bunny = Bunny.builder().rabbitName("Bunny").age(2).build(); + rabbitTemplate.convertAndSend(exchangeDirect + "~", routingKeyDirect, JSON.toJSONString(bunny)); + } + + + /* 测试失败队列的情况 */ + @Test + void publishQueueErrorTest() { + String exchangeDirect = RabbitMQMessageListenerConstants.EXCHANGE_DIRECT; + String routingKeyDirect = RabbitMQMessageListenerConstants.ROUTING_KEY_DIRECT; + rabbitTemplate.convertAndSend(exchangeDirect, routingKeyDirect, "----失败的队列发送----"); + + Bunny bunny = Bunny.builder().rabbitName("Bunny").age(2).build(); + rabbitTemplate.convertAndSend(exchangeDirect, routingKeyDirect + "~", JSON.toJSONString(bunny)); + } }