ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MQTT libary之发布和订阅

2021-11-21 11:58:44  阅读:274  来源: 互联网

标签:订阅 QoS Text 发送 topic MQTT client 消息 libary


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的基本用法。

相关源代码已经上传

 

 

标签:订阅,QoS,Text,发送,topic,MQTT,client,消息,libary
来源: https://blog.csdn.net/qq_20048517/article/details/121450958

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有