dotnet-cqrs/Svrnty.CQRS.Events.RabbitMQ/Delivery/RabbitMQEventDeliveryHostedService.cs

37 lines
1.3 KiB
C#

using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Svrnty.CQRS.Events.RabbitMQ.Delivery;
/// <summary>
/// Hosted service that manages the lifecycle of the RabbitMQ event delivery provider.
/// </summary>
internal sealed class RabbitMQEventDeliveryHostedService : IHostedService
{
private readonly RabbitMQEventDeliveryProvider _provider;
private readonly ILogger<RabbitMQEventDeliveryHostedService> _logger;
public RabbitMQEventDeliveryHostedService(
RabbitMQEventDeliveryProvider provider,
ILogger<RabbitMQEventDeliveryHostedService> 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);
}
}