using Utility.Environment; using Utility.Queue.Handler; using Utility.Queue.Subscribers; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Utility.Queue { public class QueueSubscriberService : BackgroundService where T : IMessageHandler { private readonly IServiceProvider ServiceProvider; private readonly IEnvironmentRequester EnvironmentRequester; public QueueSubscriber(IServiceProvider serviceProvider, IEnvironmentRequester environmentRequester) { ServiceProvider = serviceProvider; EnvironmentRequester = environmentRequester; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var subscriber = new SQSSubscriber(EnvironmentRequester, ServiceProvider); var nameResolver = new NameResolver(EnvironmentRequester); await subscriber.SetQueueName(nameResolver.GetQueueName()); await subscriber.PollSQS(ServiceProvider, stoppingToken); } } }