MQTT libary之发布和订阅

1.之前的文章已经介绍mqtt server的安装和使用,本篇文章介绍mqtt的基本功能和用法

 接下来会进行介绍

2.首先要弄清楚Qos

QoS 级别越高,流程越复杂,系统资源消耗越大。应用程序可以根据自己的网络场景和业务需求,选择合适的 QoS 级别。

以下情况下可以选择 QoS 0

  • 可以接受消息偶尔丢失。
  • 在同一个子网内部的服务间的消息交互,或其他客户端与服务端网络非常稳定的场景。

以下情况下可以选择 QoS 1

  • 对系统资源消耗较为关注,希望性能最优化。
  • 消息不能丢失,但能接受并处理重复的消息。

以下情况下可以选择 QoS 2

  • 不能忍受消息丢失(消息的丢失会造成生命或财产的损失),且不希望收到重复的消息。
  • 数据完整性与及时性要求较高的银行、消防、航空等行业。

 3.Mqtt消息发布订阅模型

Qos 0:

MQTT libary之发布和订阅

Qos 1:

MQTT libary之发布和订阅 

 

Qos2

MQTT libary之发布和订阅

 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

MQTT libary之发布和订阅

 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.运行起来,先点击订阅

MQTT libary之发布和订阅

注意: 发送和接受的topic要符合一定的规则才能接受

1.完全一致,点击发送就可以收到消息

MQTT libary之发布和订阅

2.订阅topic :Test/#,表示,Test下所有子的Topic均可以收到,这用mqtt的这个特性,可以将物联网进行有效的分类和区分,这样对于服务器的loading和运维均有较大的改善

 MQTT libary之发布和订阅

 3.1个人发送消息,多人同时收到

MQTT libary之发布和订阅

3.1个人发送消息,多人轮流接受,使用Topic前增加$queue

 

MQTT libary之发布和订阅

消息,2个客户端轮流接收,没有重复

MQTT libary之发布和订阅 

以上是mqtt的基本用法。

相关源代码已经上传

 

 

上一篇:网络编程——物联网利器MQTT通信协议详解(四)


下一篇:Python 请求数据