当设备连接到云端的时候,设备就可以上传自己的状态,根据具体的义务场景设备上报的消息可以分成多类,比如:
设备状态上报:包括设备的在线信息、电量、温度、湿度等; 告警信息上报:包括设备故障、异常、预警等; 设备采集信息上报:传感器采集的温度、湿度、气压等数据。

为了更好地管理和监控设备的状态,提高系统的可靠性和稳定性,云端常需要对设备上报的消息类型进行区分和分类。
那是如何实现消息分类的呢?
在设备和云端通信采用的协议是MQTT协议,其可以支持发布/订阅模式,因此在MQTT协议中的TOPIC可以用标签(tag)进行更细粒度的消息过滤。
其实现步骤:
-
在MQ中创建一个主题,例如:mqtt_topic,在发布消息时,指定标签,例如:mqtt_tag;
Message msg = new Message("mqtt_topic", "mqtt_tag", "Hello RocketMQ MQTT".getBytes());
producer.send(msg);
-
在消费消息时,通过指定标签来订阅消息,例如:mqtt_tag;
consumer.subscribe("mqtt_topic", "mqtt_tag");
这样,消费者就只会接收到主题为mqtt_topic,标签为mqtt_tag的消息。
消息上报的示意图如下:

如图所示,包含三个模块,设备端上报信息,MQTT Broker中转消息,云端服务消费消息。设备端上报消息的时候除了指定topic外,还指定了tag,这就实现设备端的消息区分;云端的服务根据自己业务服务需求,去消费指定的tag消息,也就实现了消息的分类处理。
如上简介了一个MQ中对消费更加细粒度区分的方法,需要从设备端指定tag进行区分,然后消费端才可以根据tag获取该类的消息。
原文始发于微信公众号(CodeJames):实现设备上报消息分类处理
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148181.html