MqttInstaller.cs 1.13 KB
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Rcs.Application.Shared;
using Rcs.Infrastructure.Mqtt;
using Rcs.Infrastructure.Mqtt.ParseFactory;

namespace Rcs.Infrastructure.Installs
{
    public static class MqttInstaller
    {
        /// <summary>
        /// 安装MQTT客户端服务
        /// </summary>
        public static void InstallMqtt(this WebApplicationBuilder builder)
        {
            // 注册MQTT消息处理器
            builder.Services.AddSingleton<IMqttMessageHandler, MqttMessageHandler>();
            
            // 注册消息解析工厂
            builder.Services.AddSingleton<IStateParserFactory, StateParserFactory>();
            builder.Services.AddSingleton<IVisualizationParserFactory, VisualizationParserFactory>();
            
            // 注册MQTT客户端服务(作为后台服务运行)
            builder.Services.AddSingleton<IMqttClientService, MqttClientService>();
            builder.Services.AddHostedService<MqttClientService>(provider => 
                (MqttClientService)provider.GetRequiredService<IMqttClientService>());
        }
    }
}