using System; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace Svrnty.CQRS.Events.RabbitMQ.Delivery; /// /// Hosted service that manages the lifecycle of the RabbitMQ event delivery provider. /// internal sealed class RabbitMQEventDeliveryHostedService : IHostedService { private readonly RabbitMQEventDeliveryProvider _provider; private readonly ILogger _logger; public RabbitMQEventDeliveryHostedService( RabbitMQEventDeliveryProvider provider, ILogger logger) { _provider = provider ?? throw new ArgumentNullException(nameof(provider)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public async Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Starting RabbitMQ event delivery hosted service"); await _provider.StartAsync(cancellationToken); } public async Task StopAsync(CancellationToken cancellationToken) { _logger.LogInformation("Stopping RabbitMQ event delivery hosted service"); await _provider.StopAsync(cancellationToken); } }