Updating
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
using LCU.Library.Internal.ApiResponse.Models;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using System.Threading.Tasks;
|
||||
namespace LCU.Api.Internal.FileOperations.Services.QueueServices;
|
||||
|
||||
public interface IQueueFileOperationsService
|
||||
{
|
||||
Task QueueFileOperations<TRequest>(TRequest originalRequest, FileOperationType operationType) where TRequest : ReturnResponse;
|
||||
Task QueueFileOperationsRequest(QueueRequest queueRequest);
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading;
|
||||
using Newtonsoft.Json;
|
||||
using Serilog;
|
||||
using MassTransit;
|
||||
using LCU.Library.Internal.LcuMassTransitModels;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
using LCU.Library.Internal.ApiResponse.Models;
|
||||
namespace LCU.Api.Internal.FileOperations.Services.QueueServices;
|
||||
|
||||
public class QueueFileOperationsService : IQueueFileOperationsService
|
||||
{
|
||||
private readonly ISendEndpoint _sendEndpoint;
|
||||
private readonly ReceiveEndpointConfiguration _receiveEndpointConfiguration;
|
||||
|
||||
public QueueFileOperationsService(IBusControl busControl,
|
||||
ReceiveEndpointConfiguration receiveEndpointConfiguration)
|
||||
{
|
||||
_receiveEndpointConfiguration = receiveEndpointConfiguration;
|
||||
_sendEndpoint = busControl.GetSendEndpoint(_receiveEndpointConfiguration.ReceiveEndpointUri).Result;
|
||||
}
|
||||
|
||||
public async Task QueueFileOperations<TRequest>(TRequest originalRequest, FileOperationType operationType) where TRequest : ReturnResponse
|
||||
{
|
||||
try
|
||||
{
|
||||
QueueRequest queueRequest = new QueueRequest()
|
||||
{
|
||||
ReturnResponse = originalRequest,
|
||||
FileOperationType = operationType,
|
||||
Request = JsonConvert.SerializeObject(originalRequest),
|
||||
Attempts = 0,
|
||||
QueueTimeStamp = DateTime.Now
|
||||
};
|
||||
|
||||
await QueueFileOperationsRequest(queueRequest);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, $"Failed to Queue File Operations. FileOperationType: {operationType.ToString()}");
|
||||
throw new ServiceException($"Failed to Queue File Operation Request. FileOperationType: {operationType.ToString()}");
|
||||
}
|
||||
}
|
||||
|
||||
public async Task QueueFileOperationsRequest(QueueRequest queueRequest)
|
||||
{
|
||||
try
|
||||
{
|
||||
var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(30));
|
||||
await _sendEndpoint.Send(queueRequest, cancellationTokenSource.Token);
|
||||
}
|
||||
catch (TaskCanceledException exception)
|
||||
{
|
||||
Log.Error(exception, $"Failed to Queue File Operation Request. FileOperationType: {queueRequest.FileOperationType}");
|
||||
throw new ServiceException(exception.Message);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.Error(exception, $"Failed to Queue File Operation Request. FileOperationType: {queueRequest.FileOperationType}");
|
||||
throw new ServiceException($"Failed to Queue File Operation Request. FileOperationType: {queueRequest.FileOperationType}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user