using YLErp.Abstract; using YLErp.Modules.SwapModule; namespace YLErp.Web.App.KafkaTask { /// /// 交易日历重新加载到缓存 /// public class HolidayConsumerKafkaTask : IHostedService, IDisposable { private readonly IYcLogger _logger; private readonly CancellationTokenSource _cts = new CancellationTokenSource(); private KafkaConsumerHelper _holidayConsumer; private string holidayTopic = string.Empty; private string holidayGroupId = string.Empty; public HolidayConsumerKafkaTask() { _logger = LogFactory.GetLogger("HolidayConsumerKafkaTask"); holidayTopic = Environment.GetEnvironmentVariable("KafkaConfig_YiLian_HolidayResetTopic"); holidayGroupId = Environment.GetEnvironmentVariable("KafkaConfig_YiLian_HolidayResetGroupId"); _holidayConsumer = new KafkaConsumerHelper(holidayGroupId, holidayTopic); } public void Dispose() { _cts.Dispose(); } public Task StartAsync(CancellationToken cancellationToken) { Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); return Task.CompletedTask; } public async Task StopAsync(CancellationToken cancellationToken) { _cts.Cancel(); await Task.CompletedTask; } private async Task ExecuteTask(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { try { await Task.Run(() => { _holidayConsumer.Subscribe(msg => { CalendarBLL.ResetCalendarForQdp(); }); }, cancellationToken); } catch (Exception ex) { _logger.Error("HolidayConsumerKafkaTask Exception", ex); } } } } }