protected override async Task ExecuteAsync(CancellationToken stoppingToken) { ILogQueueService logQueueService = _services.GetRequiredService <ILogQueueService>(); IElasticSender sender = _services.GetRequiredService <IElasticSender>(); List <string> items = new(BULK_SIZE); while (true) { try { if (stoppingToken.IsCancellationRequested) { return; } for (int i = 0; i < BULK_SIZE; ++i) { string?item = await logQueueService.Next(_timeoutBeforeSend); if (item is null) { break; } items.Add(item); } if (items.Count > 0) { await sender.Send(items); items.Clear(); } } catch (Exception ex) { Console.WriteLine(ex); } } }
public ImmediateQueueLogSender(ILogService service, IElasticSender client) : base(service) { _client = client; }