Files
hrynco-notification-service/HrynCo.NotificationService.Worker/SendEmailConsumer.cs
T
Anatolii Grynchuk 25fb48ccf0 refactor: modularize email processing logic and improve service structure
- Extract email template handling, rendering, and sending code into `Worker.Services` project.
- Introduce `EmailTemplateService`, `EmailTemplateRenderingService`, and `SendEmailService`.
- Simplify consumer logic by delegating to scoped services.
- Update project dependencies and package references accordingly.
2026-05-14 22:15:15 +03:00

33 lines
1.1 KiB
C#

namespace HrynCo.NotificationService.Worker;
using HrynCo.NotificationService.Contracts.Messages;
using Hrynco.RabbitMq;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using HrynCo.NotificationService.Worker.Services.EmailProcessing;
public sealed class SendEmailConsumer : RabbitMqConsumerBase<SendEmailMessage, SendEmailMessageData>
{
private readonly IServiceScopeFactory _scopeFactory;
public SendEmailConsumer(
IOptionsMonitor<RabbitMqSettings> options,
IServiceScopeFactory scopeFactory,
ILogger<SendEmailConsumer> logger)
: base(options, logger)
{
_scopeFactory = scopeFactory;
}
private const string IncomingQueue = "notification.send-email";
protected override string QueueName => IncomingQueue;
protected override async Task HandleMessageAsync(SendEmailMessage message, CancellationToken cancellationToken)
{
using var scope = _scopeFactory.CreateScope();
var service = scope.ServiceProvider.GetRequiredService<ISendEmailService>();
await service.ProcessAsync(message, cancellationToken);
}
}