MQTT中我们会把同一个channelId 的connect 和tcpclean删除掉 但是多余的 connect我们没办法判定这个是不是在线的,拿到我们维护的状态表中 如果有connect 一定是在线的么 ?
这个需要你们自己在内存中维护,例如存一分channelId 为key ,状态伟value的map。事件到达了就存进去,然后去匹配里面事件是不是配对的。比如channelId A 的下线时间先到,你们也存进去,然后channelId A 的上线事件才到,你们可以去查map里面是不是有下线事件,有的就匹配了,说明这个是一个乱序的,你们可以自己决定直接删除map还是什么操作,分布式系统,时间戳也不准的,也有情况时间戳不一致,此回答整理自钉群“阿里云 微消息队列 MQTT产品咨询群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/