37 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|