mirror of
https://github.com/NecroticBamboo/QRBee.git
synced 2025-12-21 12:11:53 +00:00
DEEP-42 Custom metrics added to Transaction monitoring
This commit is contained in:
parent
fb50477521
commit
263f132a22
@ -16,21 +16,21 @@
|
||||
"NumberOfClients": 100,
|
||||
"NumberOfMerchants": 10,
|
||||
"NumberOfThreads": 6,
|
||||
"DelayBetweenMessagesMSec": 500,
|
||||
"DelayBetweenMessagesMSec": 250,
|
||||
"DelayJitterMSec": 50,
|
||||
"MinAmount": 10,
|
||||
"MaxAmount": 100,
|
||||
|
||||
//0.004
|
||||
//0.0016
|
||||
"LoadSpike": {
|
||||
"Probability": 0.002,
|
||||
"Probability": 0.0,
|
||||
"Duration": "00:00:15",
|
||||
"Parameters": {
|
||||
"Delay": "00:00:00.0100000"
|
||||
}
|
||||
},
|
||||
|
||||
//0.002
|
||||
//0.0008
|
||||
"TransactionCorruption": {
|
||||
"Probability": 0,
|
||||
"Duration": "00:00:15",
|
||||
@ -49,7 +49,7 @@
|
||||
|
||||
//0.003
|
||||
"UnconfirmedTransaction": {
|
||||
"Probability": 0,
|
||||
"Probability": 0.0008,
|
||||
"Duration": "00:00:15",
|
||||
"Parameters": {
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ namespace QRBee.Api.Services
|
||||
private Counter<int> SucceededTransactionsCounter { get; }
|
||||
private Counter<int> FailedTransactionsCounter { get; }
|
||||
private Counter<int> CorruptTransactionsCounter { get; }
|
||||
private Counter<int> CancelledTransactionsCounter { get; }
|
||||
private Counter<int> SucceededPaymentConfirmationsCounter { get; }
|
||||
private Counter<int> FailedPaymentConfirmationsCounter { get; }
|
||||
private Counter<long> TotalCreditCardCheckTime { get; }
|
||||
@ -29,6 +30,7 @@ namespace QRBee.Api.Services
|
||||
SucceededTransactionsCounter = meter.CreateCounter<int>("transaction-succeeded", description: "Transaction succeeded");
|
||||
FailedTransactionsCounter = meter.CreateCounter<int>("transaction-failed", description: "Transaction failed");
|
||||
CorruptTransactionsCounter = meter.CreateCounter<int>("transaction-corrupt", description: "Transaction was corrupted");
|
||||
CancelledTransactionsCounter = meter.CreateCounter<int>("transaction-cancelled", description: "Transaction was cancelled by TransactionMonitoring class");
|
||||
|
||||
SucceededPaymentConfirmationsCounter = meter.CreateCounter<int>("payment-confirmation-succeeded", description: "Payment confirmation succeeded");
|
||||
FailedPaymentConfirmationsCounter = meter.CreateCounter<int>("payment-confirmation-failed", description: "Payment confirmation failed");
|
||||
@ -47,6 +49,7 @@ namespace QRBee.Api.Services
|
||||
public void AddSucceededTransaction() => SucceededTransactionsCounter.Add(1);
|
||||
public void AddFailedTransaction() => FailedTransactionsCounter.Add(1);
|
||||
public void AddCorruptTransaction() => CorruptTransactionsCounter.Add(1);
|
||||
public void AddCancelledTransaction() => CancelledTransactionsCounter.Add(1);
|
||||
public void AddSucceededPaymentConfirmation() => SucceededPaymentConfirmationsCounter.Add(1);
|
||||
public void AddFailedPaymentConfirmation() => FailedPaymentConfirmationsCounter.Add(1);
|
||||
public void AddTotalCreditCardCheckTime(long milliseconds) => TotalCreditCardCheckTime.Add(milliseconds);
|
||||
|
||||
@ -7,16 +7,20 @@ namespace QRBee.Api.Services
|
||||
private readonly IStorage _storage;
|
||||
private readonly IPaymentGateway _paymentGateway;
|
||||
private readonly ILogger<TransactionMonitoring> _logger;
|
||||
private const double Minutes = 5;
|
||||
private const double Minutes = 2;
|
||||
private const double Seconds = 30;
|
||||
|
||||
private static bool _started;
|
||||
private static object _syncObject = new();
|
||||
|
||||
public TransactionMonitoring(IStorage storage, IPaymentGateway paymentGateway, ILogger<TransactionMonitoring> logger)
|
||||
private readonly CustomMetrics _customMetrics;
|
||||
|
||||
public TransactionMonitoring(IStorage storage, IPaymentGateway paymentGateway, ILogger<TransactionMonitoring> logger, CustomMetrics metrics)
|
||||
{
|
||||
_storage = storage;
|
||||
_paymentGateway = paymentGateway;
|
||||
_logger = logger;
|
||||
_customMetrics = metrics;
|
||||
|
||||
if (_started)
|
||||
return;
|
||||
@ -37,7 +41,7 @@ namespace QRBee.Api.Services
|
||||
while (true)
|
||||
{
|
||||
await CheckTransactions();
|
||||
await Task.Delay(TimeSpan.FromMinutes(Minutes));
|
||||
await Task.Delay(TimeSpan.FromSeconds(Seconds));
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,11 +54,12 @@ namespace QRBee.Api.Services
|
||||
{
|
||||
if (transaction.ServerTimeStamp + TimeSpan.FromMinutes(Minutes) > DateTime.UtcNow)
|
||||
{
|
||||
_logger.LogDebug($"Transaction: {transaction.MerchantTransactionId} should not be cancelled yet (ServerTimeStamp: {transaction.ServerTimeStamp:O}, Now: {DateTime.UtcNow:O})");
|
||||
// _logger.LogDebug($"Transaction: {transaction.MerchantTransactionId} should not be cancelled yet (ServerTimeStamp: {transaction.ServerTimeStamp:O}, Now: {DateTime.UtcNow:O})");
|
||||
continue;
|
||||
}
|
||||
|
||||
_logger.LogDebug($"Cancelling transaction: {transaction.MerchantTransactionId}...");
|
||||
|
||||
await CancelTransaction(transaction);
|
||||
}
|
||||
}
|
||||
@ -74,6 +79,7 @@ namespace QRBee.Api.Services
|
||||
}
|
||||
|
||||
transaction.Status = TransactionInfo.TransactionStatus.Cancelled;
|
||||
_customMetrics.AddCancelledTransaction();
|
||||
await _storage.UpdateTransaction(transaction);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user