first region implementation

This commit is contained in:
Anton Martynenko
2025-10-28 15:56:16 +01:00
parent 12f3bf890a
commit bbb112940d
10 changed files with 576 additions and 0 deletions
@@ -0,0 +1,53 @@
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using SatelliteProvider.Common.Interfaces;
namespace SatelliteProvider.Services;
public class RegionProcessingService : BackgroundService
{
private readonly IRegionRequestQueue _queue;
private readonly IRegionService _regionService;
private readonly ILogger<RegionProcessingService> _logger;
public RegionProcessingService(
IRegionRequestQueue queue,
IRegionService regionService,
ILogger<RegionProcessingService> logger)
{
_queue = queue;
_regionService = regionService;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
_logger.LogInformation("Region Processing Service started");
while (!stoppingToken.IsCancellationRequested)
{
try
{
var request = await _queue.DequeueAsync(stoppingToken);
if (request != null)
{
_logger.LogInformation("Dequeued region request {RegionId}", request.Id);
await _regionService.ProcessRegionAsync(request.Id, stoppingToken);
}
}
catch (OperationCanceledException)
{
break;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error processing region request");
}
}
_logger.LogInformation("Region Processing Service stopped");
}
}