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);
            }
        }
    }
Пример #2
0
 public ImmediateQueueLogSender(ILogService service, IElasticSender client) : base(service)
 {
     _client = client;
 }