namespace Hg.Complaint.WebApi.Workers { internal class ComplaintMessageWorker : BackgroundService { private readonly IServiceProvider _serviceProvider; public ComplaintMessageWorker(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var scope = _serviceProvider.CreateScope(); var complaintDomain = scope.ServiceProvider.GetRequiredService(); while (true) { try { var queue = await complaintDomain.GetQueue(); if (queue > 0) { var dto = await complaintDomain.DequeueQueue(); if (dto != null && dto.Id > 0) { await complaintDomain.AnalyseComplaintLog(dto); } } } catch (Exception ex) { Log.Error(ex, "分析投诉任务报错!"); } await Task.Delay(500, stoppingToken); } } } }