Exemple #1
0
        public async Task Flush()
        {
            while (true)
            {
                var dequeueSize = events.Count < _settings.Value.BatchSize ?
                                  events.Count :
                                  _settings.Value.BatchSize;

                var chunk = events
                            .DequeueChunk(dequeueSize)
                            .ToList();

                if (!chunk.Any())
                {
                    break;
                }


                var path = Path.Combine(
                    CommonHelper.MapPath(_packStoreOptions.TempStorePath),
                    $"{CommonHelper.NewSequentialGuid().ToString()}.log");
                MessagePackHelper.ToPack(path, chunk);

                await Task.CompletedTask;
            }
        }
Exemple #2
0
        public async Task <IEnumerable <object> > GetMessages()
        {
            await MessageLock.WaitAsync();

            lastPoll = DateTime.UtcNow;
            return(messages.DequeueChunk());
        }
        public async Task Flush()
        {
            _logger.LogTrace("Flushing honeycomb events");
            while (true)
            {
                var dequeueSize = events.Count < _settings.Value.BatchSize ?
                                  events.Count :
                                  _settings.Value.BatchSize;

                var chunk = events
                            .DequeueChunk(dequeueSize)
                            .ToList();

                if (!chunk.Any())
                {
                    break;
                }

                await SendBatchAsync(chunk);
            }
        }
        public async Task <IEnumerable <object> > GetMessages(CancellationToken requestAborted)
        {
            try
            {
                try
                {
                    lastPollLock.Wait();
                    pollInProgress = true;
                }
                finally
                {
                    lastPollLock.Release();
                }

                await messageLock.WaitAsync(requestAborted);

                return(messages.DequeueChunk());
            }
            catch (OperationCanceledException)
            {
                return(null);
            }
            finally
            {
                try
                {
                    lastPollLock.Wait();
                    pollInProgress = false;
                    lastPoll       = DateTimeOffset.UtcNow;
                }
                finally
                {
                    lastPollLock.Release();
                }
            }
        }
 public IEnumerable <object> GetMessages()
 {
     lastPoll = DateTime.UtcNow;
     return(messages.DequeueChunk());
 }