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('/'); //將解析后的出具進行處理<br> }); // 修改訂閱配置 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、以下是程序接收到數據后的截圖

浙公網安備 33010602011771號