mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-04-22 09:06:38 +00:00
first region implementation
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user