public class OutboxWorker(ILogger<OutboxWorker> logger, IServiceScopeFactory serviceScopeFactory, IEventPublisher eventPublisher) : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
using (IServiceScope scope = serviceScopeFactory.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<OrdersDbContext>();
var outboxItems = db.Outbox.Where(item => !item.Processed);
foreach (var item in outboxItems)
{
logger.LogInformation("some operation is done")
item.Processed = True
break;
}
db.Outbox.Update(item);
}
await db.SaveChangesAsync(stoppingToken);
}
await Task.Delay(5000, stoppingToken);
}
}
}
public class OutboxWorker(ILogger<OutboxWorker> logger, IServiceScopeFactory serviceScopeFactory, IEventPublisher eventPublisher) : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
using (IServiceScope scope = serviceScopeFactory.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<OrdersDbContext>();
var outboxItems = db.Outbox.Where(item => !item.Processed);
foreach (var item in outboxItems)
{
logger.LogInformation("some operation is done")
item.Processed = True
break;
}
db.Outbox.Update(item);
}
await db.SaveChangesAsync(stoppingToken);
}
await Task.Delay(5000, stoppingToken);
}
}
}