Commit 8e7bbfe0daed7d598c62396d7db0a771bc5768b4

Authored by YunaiV
1 parent 41c41bc6

【代码评审】IoT:rocketmq 数据桥接的接入

yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotDataBridgeDO.java
... ... @@ -146,32 +146,28 @@ public class IotDataBridgeDO extends BaseDO {
146 146 * RocketMQ 名称服务器地址
147 147 */
148 148 private String nameServer;
  149 + /**
  150 + * 访问密钥
  151 + */
  152 + private String accessKey;
  153 + /**
  154 + * 秘密钥匙
  155 + */
  156 + private String secretKey;
149 157  
150 158 /**
151   - * 生产者/消费者组
  159 + * 生产者组
152 160 */
153 161 private String group;
154   -
155 162 /**
156 163 * 主题
157 164 */
158 165 private String topic;
159   -
160 166 /**
161 167 * 标签
162 168 */
163 169 private String tags;
164 170  
165   - /**
166   - * 访问密钥
167   - */
168   - private String accessKey;
169   -
170   - /**
171   - * 秘密钥匙
172   - */
173   - private String secretKey;
174   -
175 171 }
176 172  
177 173 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/action/IotRuleSceneDataBridgeAction.java
... ... @@ -143,39 +143,38 @@ public class IotRuleSceneDataBridgeAction implements IotRuleSceneAction {
143 143 }
144 144  
145 145 private void executeRocketMQ(IotDeviceMessage message, IotDataBridgeDO.RocketMQConfig config) {
146   - // 1. 创建生产者实例,指定生产者组名
  146 + // 1.1 创建生产者实例,指定生产者组名
147 147 DefaultMQProducer producer = new DefaultMQProducer(config.getGroup());
  148 + // TODO @puhui999:可以考虑,基于 guava 做 cache,使用 config 作为 key,然后假个 listener 超时,销毁 producer
148 149 try {
149   - // 2. 设置 NameServer 地址
  150 + // 1.2 设置 NameServer 地址
150 151 producer.setNamesrvAddr(config.getNameServer());
151   - // 3. 启动生产者
  152 + // 1.3 启动生产者
152 153 producer.start();
153   - // 4. 创建消息对象,指定Topic、Tag和消息体
  154 +
  155 + // 2.1 创建消息对象,指定Topic、Tag和消息体
154 156 Message msg = new Message(
155 157 config.getTopic(),
156 158 config.getTags(),
157 159 message.toString().getBytes(RemotingHelper.DEFAULT_CHARSET)
158 160 );
159   -
160   - // 5. 发送同步消息并处理结果
  161 + // 2.2 发送同步消息并处理结果
161 162 SendResult sendResult = producer.send(msg);
162   - // 6. 处理发送结果
  163 + // 2.3 处理发送结果
163 164 if (SendStatus.SEND_OK.equals(sendResult.getSendStatus())) {
164   - log.info("[executeRocketMQ][message({}) config({}) 发送成功,结果({})]",
165   - message, config, sendResult);
  165 + log.info("[executeRocketMQ][message({}) config({}) 发送成功,结果({})]", message, config, sendResult);
166 166 } else {
167   - log.error("[executeRocketMQ][message({}) config({}) 发送失败,结果({})]",
168   - message, config, sendResult);
  167 + log.error("[executeRocketMQ][message({}) config({}) 发送失败,结果({})]", message, config, sendResult);
169 168 }
170 169 } catch (Exception e) {
171   - log.error("[executeRocketMQ][message({}) config({}) 发送异常]",
172   - message, config, e);
  170 + log.error("[executeRocketMQ][message({}) config({}) 发送异常]", message, config, e);
173 171 } finally {
174   - // 7. 关闭生产者
  172 + // 3. 关闭生产者
175 173 producer.shutdown();
176 174 }
177 175 }
178 176  
  177 + // TODO @芋艿:测试代码,后续清理
179 178 public static void main(String[] args) {
180 179 // 1. 创建 IotRuleSceneDataBridgeAction 实例
181 180 IotRuleSceneDataBridgeAction action = new IotRuleSceneDataBridgeAction();
... ...