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)); } }