介紹?
????????MQTT(消息隊列遙測傳輸)是一種輕量級消息傳遞協議,專為資源受限的環境而設計。MQTT 廣泛應用于物聯網 (IoT) 和機器對機器 (M2M) 通信。
????????本文將討論如何在 .NET 7 中實現 MQTT 消費者。我們將使用 MQTTnet 庫,這是 C# 中的高性能 MQTT 客戶端庫。
設置環境
????????要開始使用 .NET 7,您必須在系統上安裝它。您可以從 .NET 官方網站下載并安裝 .NET 7。
????????要使用 MQTTnet,您需要將 MQTTnet NuGet 包添加到您的項目中。您可以使用 Visual Studio 中的 NuGet 包管理器或 dotnet CLI 來完成此操作。
dotnet add package MQTTnet
實現 MQTT 消費者
您需要創建一個新的控制臺應用程序來在 .NET 7 中實現 MQTT 消費者。在此示例中,我們將訂閱一個主題并從 MQTT 代理接收消息。
using System;
using System.Threading;
using System.Threading.Tasks;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Client.Subscribing;
using MQTTnet.Protocol;
class Program {
? ? static async Task Main(string[] args) {
? ? ? ? var factory = new MqttFactory();
? ? ? ? var client = factory.CreateMqttClient();
? ? ? ? var options = new MqttClientOptionsBuilder().WithTcpServer("localhost", 1883).WithClientId("mqtt_consumer").Build();
? ? ? ? client.UseConnectedHandler(async e => {
? ? ? ? ? ? Console.WriteLine("Connected to MQTT broker.");
? ? ? ? ? ? var topicFilter = new MqttTopicFilterBuilder().WithTopic("test/topic").Build();
? ? ? ? ? ? await client.SubscribeAsync(new MqttClientSubscribeOptionsBuilder().WithTopicFilter(topicFilter).Build());
? ? ? ? });
? ? ? ? client.UseDisconnectedHandler(async e => {
? ? ? ? ? ? Console.WriteLine("Disconnected from MQTT broker.");
? ? ? ? ? ? await Task.Delay(TimeSpan.FromSeconds(5));
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? await client.ConnectAsync(options, CancellationToken.None);
? ? ? ? ? ? } catch {
? ? ? ? ? ? ? ? Console.WriteLine("Reconnecting to MQTT broker failed.");
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? client.UseApplicationMessageReceivedHandler(e => {
? ? ? ? ? ? Console.WriteLine($ "Received message on topic '{e.ApplicationMessage.Topic}': {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
? ? ? ? });
? ? ? ? try {
? ? ? ? ? ? await client.ConnectAsync(options, CancellationToken.None);
? ? ? ? } catch {
? ? ? ? ? ? Console.WriteLine("Connecting to MQTT broker failed.");
? ? ? ? }
? ? ? ? Console.ReadLine();
? ? }
}
????????上述代碼創建了一個新的 MQTT 客戶端,并訂閱了“test/topic”主題。當收到該主題的消息時,會調用 UseApplicationMessageReceivedHandler 方法,并在控制臺上顯示該消息。
????????UseConnectedHandler 和 UseDisconnectedHandler 方法處理連接和斷開連接事件。當客戶端連接到 MQTT 代理時會調用 UseConnectedHandler 方法,當客戶端與 MQTT 代理斷開連接時會調用 UseDisconnectedHandler 方法。
結論
????????在本文中,我們討論了如何使用 MQTTnet 庫在 .NET 7 中實現 MQTT 消費者。我們創建了一個控制臺應用程序,用于訂閱主題并從 MQTT 代理接收消息。
????????MQTT 是一種功能強大的消息傳遞協議,可用于各種應用,包括物聯網 (IoT) 和 M2M 通信。借助 MQTTnet 庫,可以輕松地在 .NET 7 中實現 MQTT 客戶端,并且該庫提供了一系列功能。
如果您喜歡此文章,請收藏、點贊、評論,謝謝,祝您快樂每一天。?