diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Message.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Message.java new file mode 100644 index 0000000..0206014 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Message.java @@ -0,0 +1,172 @@ +package com.ruoyi.common.core.domain; + +import java.time.Instant; +import java.util.Map; +import java.util.UUID; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +public class Message { + + /** 消息唯一标识符 */ + private String messageId; + /** 发送者标识 */ + private String sender; + /** 接收者标识 */ + private String receiver; + /** 消息时间戳 */ + private Instant timestamp; + /** 消息类型(如命令、聊天、日志、事件等) */ + private String type; + /** 消息主题或事件名称 */ + private String subject; + /** 消息数据负载 */ + private Map payload; + /** 元数据,用于存储额外的信息 */ + private Map metadata; + /** 消息状态(如成功、失败、重试等) */ + private String status; + /** 重试次数 */ + private int retryCount; + /** 最大重试次数 */ + private int maxRetries; + /** 重试间隔 */ + private String retryInterval; + + // 构造函数 + public Message() { + this.messageId = UUID.randomUUID().toString(); + this.timestamp = Instant.now(); + } + + public static Message create() { + return new Message(); + } + + public String getMessageId() { + return messageId; + } + + public Message setMessageId(String messageId) { + this.messageId = messageId; + return this; + } + + public String getSender() { + return sender; + } + + public Message setSender(String sender) { + this.sender = sender; + return this; + } + + public String getReceiver() { + return receiver; + } + + public Message setReceiver(String receiver) { + this.receiver = receiver; + return this; + } + + public Instant getTimestamp() { + return timestamp; + } + + public Message setTimestamp(Instant timestamp) { + this.timestamp = timestamp; + return this; + } + + public String getType() { + return type; + } + + public Message setType(String type) { + this.type = type; + return this; + } + + public String getSubject() { + return subject; + } + + public Message setSubject(String subject) { + this.subject = subject; + return this; + } + + public Map getPayload() { + return payload; + } + + public Message setPayload(Map payload) { + this.payload = payload; + return this; + } + + public Map getMetadata() { + return metadata; + } + + public Message setMetadata(Map metadata) { + this.metadata = metadata; + return this; + } + + public String getStatus() { + return status; + } + + public Message setStatus(String status) { + this.status = status; + return this; + } + + public int getRetryCount() { + return retryCount; + } + + public Message setRetryCount(int retryCount) { + this.retryCount = retryCount; + return this; + } + + public int getMaxRetries() { + return maxRetries; + } + + public Message setMaxRetries(int maxRetries) { + this.maxRetries = maxRetries; + return this; + } + + public String getRetryInterval() { + return retryInterval; + } + + public Message setRetryInterval(String retryInterval) { + this.retryInterval = retryInterval; + return this; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("messageId", getMessageId()) + .append("sender", getSender()) + .append("receiver", getReceiver()) + .append("timestamp", getTimestamp()) + .append("type", getType()) + .append("subject", getSubject()) + .append("payload", getPayload()) + .append("metadata", getMetadata()) + .append("status", getStatus()) + .append("retryCount", getRetryCount()) + .append("maxRetries", getMaxRetries()) + .append("retryInterval", getRetryInterval()) + .toString(); + } +} \ No newline at end of file diff --git a/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectReceiver.java b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectReceiver.java index c478495..569ae3f 100644 --- a/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectReceiver.java +++ b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/DirectReceiver.java @@ -1,28 +1,17 @@ package com.ruoyi.middleware.rabbitmq; -import java.util.Map; - import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; +import com.ruoyi.common.core.domain.Message; + @Component @RabbitListener(queues = "TestDirectQueue") // 监听的队列名称 TestDirectQueue public class DirectReceiver { @RabbitHandler - public void process(Map map) { + public void process(Message map) { System.out.println("DirectReceiver m消费者收到消息 : " + map.toString()); } - - @RabbitHandler - public void process(String map) { - System.out.println("DirectReceiver s消费者收到消息 : " + map.toString()); - } - - @RabbitHandler - public void process(Byte[] b) { - System.out.println("DirectReceiver s消费者收到消息 : " + b.toString()); - } - } \ No newline at end of file diff --git a/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/SendMessageController.java b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/SendMessageController.java index 50d8d4c..74377fe 100644 --- a/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/SendMessageController.java +++ b/ruoyi-middleware/ruoyi-middleware-rabbitmq/src/main/java/com/ruoyi/middleware/rabbitmq/SendMessageController.java @@ -1,10 +1,6 @@ package com.ruoyi.middleware.rabbitmq; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.HashMap; import java.util.Map; -import java.util.UUID; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +9,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Anonymous; +import com.ruoyi.common.core.domain.Message; /** * @Author : JCccc @@ -24,22 +21,21 @@ import com.ruoyi.common.annotation.Anonymous; public class SendMessageController { @Autowired - RabbitTemplate rabbitTemplate; //使用RabbitTemplate,这提供了接收/发送等等方法 + RabbitTemplate rabbitTemplate; // 使用RabbitTemplate,这提供了接收/发送等等方法 @GetMapping("/sendDirectMessage") @Anonymous public String sendDirectMessage() { - String messageId = String.valueOf(UUID.randomUUID()); - String messageData = "test message, hello!"; - String createTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - Map map=new HashMap<>(); - map.put("messageId",messageId); - map.put("messageData",messageData); - map.put("createTime",createTime); - //将消息携带绑定键值:TestDirectRouting 发送到交换机TestDirectExchange - rabbitTemplate.convertAndSend("TestDirectExchange", "TestDirectRouting", map); + // 将消息携带绑定键值:TestDirectRouting 发送到交换机TestDirectExchange + rabbitTemplate.convertAndSend( + "TestDirectExchange", + "TestDirectRouting", + Message.create() + .setPayload(Map.of("message", "你好")) + .setReceiver("接收者") + .setSender("发送者") + ); return "ok"; } - } \ No newline at end of file