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