MqttClientOptions options = new MqttClientOptions(); // options.setClientId("alarm-center_" + this.properties.getGroup() + "_" + this.properties.getNode()); options.setUsername(properties.getUsername()); options.setPassword(properties.getPassword()); options.setClientId(UUID.randomUUID().toString().replace("-","")); options.setCleanSession(true); options.setConnectTimeout(3000); client = VertxMqttClient.create(vertx, options); String share = "$share/" + this.properties.getGroup() + "/"; String topic = "/device/#"; // device下的所有topic client.publishHandler( mqttPublishMessage -> { // 判断是否是上线消息,记录每一个设备的上线时间,应对例外条件中开机启动中的无视时间 eg:/device/xjfd/generator_401012/online JSONObject payload = JSONObject.parseObject(mqttPublishMessage.payload().toString(StandardCharsets.UTF_8)); if (StringUtils.endsWith(mqttPublishMessage.topicName(), "online")) { String deviceId = payload.getString("deviceId"); redisService.setCacheObject(ONLINE_CACHE_KEY + deviceId, System.currentTimeMillis()); return; } if(StringUtils.endsWith(mqttPublishMessage.topicName(), "property/report")) { // 处理数据 try { alarmRegistry.handleMessage(payload); } catch (Throwable e) { log.error("async error -->" + e.getMessage(), e); } } }); client.connect(properties.getPort(), properties.getHost(), s -> { if (s.succeeded()){ client.subscribe(share + topic,properties.getQos()); log.info("center 建立MQTT链接"); } }); 这里有bug么
时间: 2024-02-14 20:26:51 浏览: 33
根据你提供的代码,没有明显的bug。不过需要注意以下几点:
1. 在使用`client.publishHandler()`方法时,需要确保已经成功连接到MQTT服务器,否则可能会导致未连接成功就开始订阅的问题。
2. 在处理`mqttPublishMessage`时,需要确保`mqttPublishMessage.payload().toString(StandardCharsets.UTF_8)`返回的是有效的JSON字符串,否则可能会导致JSON解析异常。
3. 在处理异常时,建议记录详细的错误信息,以方便排查问题。
如果你遇到了具体的问题或者有其他需求,请提供更多信息,我会尽力帮助你。
相关问题
ERROR Failed to compile with 48 errors 上午10:53:54 These dependencies were not found: * core-js/modules/es.array.push.js in ./node_modules/.store/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/objectSpread2.js, ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/components/HeaderSearch/index.vue?vue&type=script&lang=js& and 29 others * core-js/modules/es.error.cause.js in ./node_modules/.store/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js, ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/layout/components/Navbar.vue?vue&type=script&lang=js& and 5 others * core-js/modules/es.object.proto.js in ./node_modules/.store/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js * core-js/modules/es.regexp.dot-all.js in ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/components/ThemePicker/index.vue?vue&type=script&lang=js&, ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/layout/components/Navbar.vue?vue&type=script&lang=js& and 2 others * core-js/modules/web.url-search-params.delete.js in ./src/utils/request.js * core-js/modules/web.url-search-params.has.js in ./src/utils/request.js * core-js/modules/web.url-search-params.size.js in ./src/utils/request.js * qs in ./src/utils/request.js * svg-baker-runtime/browser-symbol in ./src/icons/svg/user.svg To install them, you can run: npm install --save core-js/modules/es.array.push.js core-js/modules/es.error.cause.js core-js/modules/es.object.proto.js core-js/modules/es.regexp.dot-all.js core-js/modules/web.url-search-params.delete.js core-js/modules/web.url-search-params.has.js core-js/modules/web.url-search-params.size.js qs svg-baker-runtime/browser-symbol怎么解决如何安装
根据你提供的错误信息,看起来是缺少一些依赖模块。你可以尝试运行以下命令来安装这些依赖模块:
``npm install --save core-js/modules/es.array.push.js core-js/modules/es.errorause.js core-js/modules/es.object.proto.js core-js/modules/es.regexp.dot-all.js core-js/modules/web.url-search-params.delete.js core-js/modules/web.url-search-params.has.js core-js/modules/web.url-search-params.size.js qs svg-baker-runtime/browser-symbol
```
这将安装缺失的依赖模块。安装完成后,重新尝试编译项目,看是否能够解决问题。
如果问题仍然存在,可能需要检查你的项目配置文件或代码,确保正确引入了这些依赖模块。另外,还可以尝试更新相关依赖包的版本,以确保与当前项目兼容。
希望这些信息对你有帮助!如果还有其他疑问,请随时提问。
docker run -d --restart=unless-stopped -v /data/logs:/logs -e MERCURY_BUSINESS_MODE=pro -e SPRING_REDIS_HOST="121.41.83.105" -e SPRING_DATASOURCE_URL="jdbc:mysql://121.41.83.105:3306/lanxi-mercury?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&rewriteBatchedStatements=true&useSSL=false&allowPublicKeyRetrieval=true" --network mercury-net --name=lanxi-mercury-service-core registry.cn-hangzhou.aliyuncs.com/bsgj/lanxi-mercury-service-core:stable-v3.4.3.154 如何在这行里面加呢
如果你想在这个命令行中添加一些内容,你可以直接在命令行末尾添加你需要的内容。以下是一个示例:
```bash
docker run -d --restart=unless-stopped -v /data/logs:/logs -e MERCURY_BUSINESS_MODE=pro -e SPRING_REDIS_HOST="121.41.83.105" -e SPRING_DATASOURCE_URL="jdbc:mysql://121.41.83.105:3306/lanxi-mercury?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&rewriteBatchedStatements=true&useSSL=false&allowPublicKeyRetrieval=true" --network mercury-net --name=lanxi-mercury-service-core registry.cn-hangzhou.aliyuncs.com/bsgj/lanxi-mercury-service-core:stable-v3.4.3.154 <YOUR_ADDITIONAL_OPTIONS_HERE>
```
在上面的命令中,`<YOUR_ADDITIONAL_OPTIONS_HERE>`是你要添加的额外选项,你可以根据需要替换为你自己的选项。
请注意,在修改命令之前,请确保你了解你要添加的选项的含义和用法,并确保不会破坏原始命令的功能。