38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
using LiteCharms.Infrastructure.ServiceBus.Queues;
|
|
|
|
namespace LiteCharms.Infrastructure.ServiceBus.Exchanges;
|
|
|
|
public class EmailExchange(EmailQueue messages, ILogger<EmailExchange> logger, IPublisher mediator) : BackgroundService
|
|
{
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
{
|
|
while (!stoppingToken.IsCancellationRequested)
|
|
{
|
|
while (messages.Incoming.TryRead(out var message))
|
|
{
|
|
try
|
|
{
|
|
switch (message.Name)
|
|
{
|
|
case "SendShopEmailEnquiryEvent":
|
|
await mediator.Publish(message, stoppingToken);
|
|
break;
|
|
case "ProcessEmailNotificationsEvent":
|
|
await mediator.Publish(message, stoppingToken);
|
|
break;
|
|
default:
|
|
logger.LogWarning("Unsupported email event {Event}", message.Name);
|
|
break;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.LogError(ex, ex.Message);
|
|
}
|
|
}
|
|
|
|
await Task.Delay(1000, stoppingToken);
|
|
}
|
|
}
|
|
}
|