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 | 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(); | ... | ... |