请教一下 Java 写物联网项目监控设备上下线方案

2023-12-08 14:53:32 +08:00
 yzqdm

刚入行不太懂。目前服务端用 springboot ,设备通讯协议是 mqtt ,然后 mqtt 服务器是用开源版的 EMQX 。然后现在有个问题,就是上一个人写的监控设备掉线是用定时任务来做的,就是隔一段时间查询数据库里的设备,哪些设备超过设定的时间没有更新状态,就认为掉线。但是这样做的问题就是隔一段时大批量更改设备状态,并且实时性不高。现在想的是哪个设备掉线了,mqtt 那边就推送这个设备掉线的信息到 java 程序中。我查了一下 mqtt 中有遗嘱功能,但是另一个技术说 EMQX 的遗嘱消息存在内存里的,进程挂了或者其他原因服务器重启了,这段时间的消息就没了,所以没用他里面的遗嘱功能。 想请教一下有这方面经验的大佬能提供一些建议。有没有别的方案可行,或者目前物联网公司的主流方案是怎么样的,谢谢

2703 次点击
所在节点    Java
24 条回复
yzqdm
2023-12-11 09:42:34 +08:00
感谢大家的解答,决定试试 EMQX 里面上下线主题试试
nealHuang
2023-12-11 11:47:04 +08:00
emqx 的上下线主题会导致所有设备跟 emqx 强绑定,如果哪天某一台设备连接的 mqtt broker 不是 emqx ,你这台设备就没法监测了。
ymz
2023-12-14 09:14:37 +08:00
@andyxq 是否在离线放到 redis ,页面根据在离线分页查的时候就没法搞了
andyxq
2023-12-18 18:41:29 +08:00
@ymz 这个只是接入层维护在线状态的一种方案,上层业务按在线状态筛选那可以往数据库同步一下状态。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/998696

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX