1、准备工作
在开始写代码之前,我们先要准备下写程序的
基础信息:MQTT地址、OrgID(机构ID)、API访问密钥
连接模式:QoS1, 持久会话 ,防止服务掉选数据丢失问题,具体模式根据实际情况而定
2、我们先创建个C#的控制台应用程序,然后写入以下代码:
// 创建MQTT客户端工厂 var mqttFactory = new MqttFactory(); var mqttClient = mqttFactory.CreateMqttClient(); // 配置MQTT客户端选项 var options = new MqttClientOptionsBuilder() .WithClientId("org-机构id-quickstart") // 修改客户端ID .WithTcpServer("服务器地址", 1883) // 修改服务器地址,使用默认端口 .WithCredentials("org-机构id", "秘钥") // 修改用户名 .WithCleanSession(false) // 添加这行,不清除会话 .Build(); // 移除 TLS 配置,因为使用的是普通连接 try { // 添加连接状态处理 mqttClient.UseDisconnectedHandler(async e => { Console.WriteLine("已断开连接!正在尝试重新连接..."); await Task.Delay(TimeSpan.FromSeconds(5)); try { await mqttClient.ConnectAsync(options); } catch { Console.WriteLine("重新连接失败"); } }); // 修改订阅主题以匹配您的格式 string topic = "/device_sensor_data/机构id/+/+/+/+"; // 添加订阅处理 mqttClient.UseApplicationMessageReceivedHandler(e => { string payload = Encoding.UTF8.GetString(e.ApplicationMessage.Payload); string topic = e.ApplicationMessage.Topic ?? ""; // 解析主题数据 string[] topicParts = topic.Split('/'); //将解析后的出具进行处理
}); // 修改订阅配置 var subscribeOptions = new MqttClientSubscribeOptionsBuilder() .WithTopicFilter(topic, MqttQualityOfServiceLevel.AtLeastOnce) .Build(); // 连接后进行订阅 await mqttClient.ConnectAsync(options); await mqttClient.SubscribeAsync(subscribeOptions); Console.WriteLine("已成功连接并订阅主题 (QoS1, 持久会话)"); // 保持程序运行 Console.WriteLine("按任意键退出..."); Console.ReadKey(); // 断开连接 await mqttClient.DisconnectAsync(); } catch (Exception ex) { Console.WriteLine($"发生错误: {ex.Message}"); }
4、以下是程序接收到数据后的截图
来源链接:https://www.cnblogs.com/leelong/p/18728877
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容