.net core mqtt客戶端Shiny.Mqtt庫的使用

一、說明

Shiny.Mqtt是一個mqtt客戶端,基於新生命團隊newlife.mqtt的封裝,推薦使用workerservice項目使用,支持.net core3,.net5,.net6

二、安裝

nuget直接搜索Shiny.Mqtt安裝

這是mqtt客戶端注入的代碼,可以看到,它是根據配置文件獲取mqtt配置的

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;

namespace Shiny.Mqtt
{
    /// <summary>
    /// Mqtt客戶端擴展類
    /// </summary>
    public static class MqttClientSetup
    {
        /// <summary>
        /// 添加Mqtt客戶端服務
        /// </summary>
        /// <param name="services"></param>
        /// <param name="redisConfiguration"></param>
        /// <exception cref="ArgumentNullException"></exception>
        public static void AddMqttClient(this IServiceCollection services, IConfiguration configuration, string section = "MqttSetting")
        {

            if (services == null) throw new ArgumentNullException(nameof(services));
            var config = configuration.GetSection(section);
            services.Configure<MqttSettingOptions>(config);
            services.AddSingleton<IMqttClientService, MqttClientService>();
        }
    }
}

所以我們的配置文件要這麼配,這裏MqttSetting可以改成其他的,只要在注入的方法裏section參數改成對應的名稱就行了

{
    "MqttSetting": {
    "Host": "192.168.1.1",
    "Port": 1883,
    "UserName": "xxx",
    "SecretKey": "xxx",
    "ClientId": "xxx",
    "Topic": "xxx"
  }
}

我實在workerservice裏使用的mqtt客戶端,所以我是這麼注入的

三、使用

直接通過構造函數注入

直接通過getclient方法訂閱消息

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            var topic = "Shiny/#";
            _logger.LogInformation($"開始訂閱頻道:{topic}:" + DateTime.Now);

            ////接收上線消息
            await mqttClientService.GetClient().SubscribeAsync(topic, (e) =>
             {
                 Console.WriteLine("收到一條消息來自主題:" + "=>" + e.Topic);


             });
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章