async Task BackgroundProcessing(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { var queueItem = await notificationsQueue.DequeueAsync(cancellationToken); try { if (queueItem is not null && !cancellationToken.IsCancellationRequested) { await ProcessQueueItemAsync(queueItem); } } catch (Exception ex) { logger.LogError(ex, "Error occurred processing {queueItem}.", queueItem); } } }