using EgwCoreLib.Lux.Data.Services; using EgwCoreLib.Lux.Data; namespace Lux.API.Services { public class RedisSubscriberService : BackgroundService { #region Public Constructors public RedisSubscriberService(IConfiguration config, RedisSubscriptionManager subManager, ExternalMessageProcessor processor) { _subManager = subManager; _processor = processor; _config = config; chSub = _config.GetValue("ServerConf:ChannelSub") ?? ""; } #endregion Public Constructors #region Protected Methods protected override Task ExecuteAsync(CancellationToken stoppingToken) { _subManager.Subscribe(chSub, async (ch, msg) => { await _processor.HandleResultMessageAsync($"{ch}", $"{msg}"); }); return Task.CompletedTask; } #endregion Protected Methods #region Private Fields private readonly IConfiguration _config; private readonly ExternalMessageProcessor _processor; private readonly RedisSubscriptionManager _subManager; private readonly string chSub = ""; #endregion Private Fields } }