1.之前的文章已经介绍mqtt server的安装和使用,本篇文章介绍mqtt的基本功能和用法
接下来会进行介绍
2.首先要弄清楚Qos
QoS 级别越高,流程越复杂,系统资源消耗越大。应用程序可以根据自己的网络场景和业务需求,选择合适的 QoS 级别。
以下情况下可以选择 QoS 0
- 可以接受消息偶尔丢失。
- 在同一个子网内部的服务间的消息交互,或其他客户端与服务端网络非常稳定的场景。
以下情况下可以选择 QoS 1
- 对系统资源消耗较为关注,希望性能最优化。
- 消息不能丢失,但能接受并处理重复的消息。
以下情况下可以选择 QoS 2
- 不能忍受消息丢失(消息的丢失会造成生命或财产的损失),且不希望收到重复的消息。
- 数据完整性与及时性要求较高的银行、消防、航空等行业。
3.Mqtt消息发布订阅模型
Qos 0:
Qos 1:
Qos2
4.Mqtt Libary的使用:
初始化:
private static MqttClient client;
client= new MqttClient("127.0.0.1", 1883, false, null, MqttSslProtocols.None);
client.Connect("test");
client.ProtocolVersion = MqttProtocolVersion.Version_3_1_1;
client.MqttMsgPublished += Client_MqttMsgPublished;
client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;
5,如果需要看到,发送的消息,先订阅需要发送的topic
client.Subscribe(new string[] { textBox4.Text }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
6.发送代码如下:
if (!string.IsNullOrEmpty(topic.Text))
client.Publish(topic.Text, System.Text.Encoding.UTF8.GetBytes( textBox2.Text));
7.运行起来,先点击订阅
注意: 发送和接受的topic要符合一定的规则才能接受
1.完全一致,点击发送就可以收到消息
2.订阅topic :Test/#,表示,Test下所有子的Topic均可以收到,这用mqtt的这个特性,可以将物联网进行有效的分类和区分,这样对于服务器的loading和运维均有较大的改善
3.1个人发送消息,多人同时收到
3.1个人发送消息,多人轮流接受,使用Topic前增加$queue
消息,2个客户端轮流接收,没有重复
以上是mqtt的基本用法。
相关源代码已经上传