feat(mq): 添加云主题消息类和模板

- 创建 CloudTopicMessage 类继承 BaseMessage,包含 guid、devId、frontId、node 和 detail 字段
- 添加 Detail 内部类,包含 type 和 msg 字段
- 使用 SerializedName 注解支持序列化和反序列化兼容性
- 创建 CloudTopicMessageTemplate 消息发送模板类
- 实现 sendMember 方法用于发送云主题消息到 CLOUD_TOPIC 主题
- 集成 RocketMQEnhanceTemplate 基础功能
This commit is contained in:
xy
2026-07-17 13:41:51 +08:00
parent a4e3a2f904
commit bdd555e408
2 changed files with 97 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
package com.njcn.mq.message;
import com.google.gson.annotations.SerializedName;
import com.njcn.middle.rocket.domain.BaseMessage;
import lombok.Data;
/**
* @author xy
* @data 2026-07-15
*/
@Data
public class CloudTopicMessage extends BaseMessage {
/**
* 消息请求的唯一标识
*/
@SerializedName("guid")
private String guid;
/**
* 设备Mac
*/
@SerializedName("Dev_id")
private String devId;
/**
* 前置Id
* 序列化输出 "FrontId",反序列化兼容 "frontId"
*/
@SerializedName("FrontId")
private String frontId;
/**
* 前置进程号
* 序列化输出 "Node",反序列化兼容 "node"
*/
@SerializedName("Node")
private Integer node;
/**
* 详情
* 序列化输出 "Detail",反序列化兼容 "detail"
*/
@SerializedName("Detail")
private Detail detail;
@Data
public static class Detail {
/**
* 类型
* 序列化输出 "Type",反序列化兼容 "type"
*/
@SerializedName("Type")
private Integer type;
/**
* 消息内容
* 序列化输出 "Msg",反序列化兼容 "msg"
*/
@SerializedName("Msg")
private Object msg;
}
}

View File

@@ -0,0 +1,33 @@
package com.njcn.mq.template;
import com.google.gson.Gson;
import com.njcn.middle.rocket.domain.BaseMessage;
import com.njcn.middle.rocket.template.RocketMQEnhanceTemplate;
import com.njcn.mq.constant.BusinessResource;
import com.njcn.mq.constant.BusinessTopic;
import com.njcn.mq.message.CloudTopicMessage;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.stereotype.Component;
/**
* 类的介绍:读取装置版本配置信息
*
* @author xuyang
* @version 1.0.0
* @createTime 2026/7/15
*/
@Component
public class CloudTopicMessageTemplate extends RocketMQEnhanceTemplate {
public CloudTopicMessageTemplate(RocketMQTemplate template) {
super(template);
}
public SendResult sendMember(CloudTopicMessage message, String tag) {
BaseMessage baseMessage = new BaseMessage();
baseMessage.setSource(BusinessResource.WEB_RESOURCE);
baseMessage.setMessageBody(new Gson().toJson(message));
return send(BusinessTopic.CLOUD_TOPIC,tag,baseMessage);
}
}