Commit 8e7bbfe0daed7d598c62396d7db0a771bc5768b4
1 parent
41c41bc6
【代码评审】IoT:rocketmq 数据桥接的接入
Showing
2 changed files
with
22 additions
and
27 deletions
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(); |