MQ尝鲜

This commit is contained in:
bunny 2025-05-18 22:42:52 +08:00
parent b8c3eb314e
commit 6c55bdbd70
5 changed files with 62 additions and 2 deletions

View File

@ -26,9 +26,11 @@
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
<spring-modulith.version>1.3.5</spring-modulith.version>
<fastjson2.version>2.0.47</fastjson2.version>
</properties>
<dependencies>
<dependency>
@ -78,6 +80,13 @@
<artifactId>spring-modulith-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- fastjson2 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson2.version}</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>

View File

@ -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";
}

View File

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

View File

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

View File

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