namespace ASC.Webhooks.Service.Services; [Singletone] public class BuildQueueService : BackgroundService { internal readonly ConcurrentQueue Queue; private readonly ICacheNotify _webhookNotify; public BuildQueueService(ICacheNotify webhookNotify) { _webhookNotify = webhookNotify; Queue = new ConcurrentQueue(); } public void BuildWebhooksQueue(WebhookRequest request) { Queue.Enqueue(request); } protected override Task ExecuteAsync(CancellationToken stoppingToken) { _webhookNotify.Subscribe(BuildWebhooksQueue, CacheNotifyAction.Update); stoppingToken.Register(() => { _webhookNotify.Unsubscribe(CacheNotifyAction.Update); }); return Task.CompletedTask; } }