34 lines
1.1 KiB
C#
34 lines
1.1 KiB
C#
using LiteCharms.Features.Abstractions;
|
|
using LiteCharms.Features.ServiceBus.Queues;
|
|
|
|
namespace LiteCharms.Features.ServiceBus.Exchanges;
|
|
|
|
public class EmailExchange(EmailQueue messages, ILogger<EmailExchange> logger, IPublisher mediator) : BackgroundService
|
|
{
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
{
|
|
await foreach(IEvent? message in messages.Incoming.ReadAllAsync(stoppingToken))
|
|
{
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|