39 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|