ComplianceServer/code/Hg.Complaint.WebApi/workers/ComplaintMessageWorker.cs

39 lines
1.2 KiB
C#

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<IComplaintDomain>();
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);
}
}
}
}