From 6c55bdbd709f99cdb95d9519936705ac2a97e914 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Sun, 18 May 2025 22:42:52 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20MQ=E5=B0=9D=E9=B2=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mq-demo/pom.xml | 9 +++++++++ .../RabbitMQMessageListenerConstants.java | 2 +- .../bunny/mq/mqdemo/domain/entity/Bunny.java | 18 ++++++++++++++++++ .../mq/listener/MessageListenerOrder.java | 18 ++++++++++++++++++ .../mq/mqdemo/MqDemoApplicationTests.java | 17 ++++++++++++++++- 5 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 mq-demo/src/main/java/cn/bunny/mq/mqdemo/domain/entity/Bunny.java diff --git a/mq-demo/pom.xml b/mq-demo/pom.xml index 0195f24..7b891be 100644 --- a/mq-demo/pom.xml +++ b/mq-demo/pom.xml @@ -26,9 +26,11 @@ + 17 1.3.5 + 2.0.47 @@ -78,6 +80,13 @@ spring-modulith-starter-test test + + + + com.alibaba.fastjson2 + fastjson2 + ${fastjson2.version} + diff --git a/mq-demo/src/main/java/cn/bunny/mq/mqdemo/domain/RabbitMQMessageListenerConstants.java b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/domain/RabbitMQMessageListenerConstants.java index a4f9386..e88e845 100644 --- a/mq-demo/src/main/java/cn/bunny/mq/mqdemo/domain/RabbitMQMessageListenerConstants.java +++ b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/domain/RabbitMQMessageListenerConstants.java @@ -3,7 +3,7 @@ package cn.bunny.mq.mqdemo.domain; public class RabbitMQMessageListenerConstants { public static final String EXCHANGE_DIRECT = "exchange.direct.order"; - public static final String ROUTING_KEY_DIRECT = "order"; public static final String QUEUE_NAME = "queue.order"; + public static final String ROUTING_KEY_DIRECT = "order"; } diff --git a/mq-demo/src/main/java/cn/bunny/mq/mqdemo/domain/entity/Bunny.java b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/domain/entity/Bunny.java new file mode 100644 index 0000000..8b4ce21 --- /dev/null +++ b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/domain/entity/Bunny.java @@ -0,0 +1,18 @@ +package cn.bunny.mq.mqdemo.domain.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Bunny { + + private String rabbitName; + + private int age; + +} diff --git a/mq-demo/src/main/java/cn/bunny/mq/mqdemo/mq/listener/MessageListenerOrder.java b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/mq/listener/MessageListenerOrder.java index d45311e..130e805 100644 --- a/mq-demo/src/main/java/cn/bunny/mq/mqdemo/mq/listener/MessageListenerOrder.java +++ b/mq-demo/src/main/java/cn/bunny/mq/mqdemo/mq/listener/MessageListenerOrder.java @@ -1,10 +1,28 @@ package cn.bunny.mq.mqdemo.mq.listener; +import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; +import static cn.bunny.mq.mqdemo.domain.RabbitMQMessageListenerConstants.*; + @Component @Slf4j public class MessageListenerOrder { + @RabbitListener(bindings = @QueueBinding( + exchange = @Exchange(value = EXCHANGE_DIRECT), + value = @Queue(value = QUEUE_NAME, durable = "true"), + key = ROUTING_KEY_DIRECT + ) + ) + public void processMessage(String dataString, Message message, Channel channel) { + System.out.println("消费端接受消息:" + dataString); + } + } 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 238c960..2ddee5c 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 @@ -1,13 +1,28 @@ package cn.bunny.mq.mqdemo; +import cn.bunny.mq.mqdemo.domain.RabbitMQMessageListenerConstants; +import cn.bunny.mq.mqdemo.domain.entity.Bunny; +import com.alibaba.fastjson2.JSON; import org.junit.jupiter.api.Test; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class MqDemoApplicationTests { + @Autowired + private RabbitTemplate rabbitTemplate; + + /* 测试发送消息 */ @Test - void contextLoads() { + void publishTest() { + 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)); } }