protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var options = _options.Value; while (!stoppingToken.IsCancellationRequested) { var item = await _eventQueue.DequeueAsync(stoppingToken); var applicationId = item.ApplicationId ?? options.CurrentApplicationId; var id = await _identityGenerator.GenerateAsync(); if (_memoryCache.TryGetValue(MonitorSettings.GetCacheKey(item.Level), out MonitorSettings settings)) { var connections = settings.GetConnections(applicationId); if (connections.Any()) { await _hubContext.Clients.Clients(connections.ToList()).ReceiveEvent(new EventViewModel { Id = id, Level = item.Level.ToLower(), Category = item.Category, Message = item.Message, ApplicationId = applicationId, EventId = item.EventId, EventType = item.EventType, Timestamp = item.Timestamp }); } } var evt = new Event { Id = id, GlobalId = id, ApplicationId = applicationId, Category = item.Category, Level = item.Level.ToLower(), EventId = item.EventId, EventType = item.EventType, Message = item.Message, Exception = item.Exception?.SerializeToJson(), ProcessId = item.ProcessId, TimeStamp = item.Timestamp }; _storeQueue.Enqueue(evt); } }