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,
|
"NumberOfClients": 100,
|
||||||
"NumberOfMerchants": 10,
|
"NumberOfMerchants": 10,
|
||||||
"NumberOfThreads": 6,
|
"NumberOfThreads": 6,
|
||||||
"DelayBetweenMessagesMSec": 500,
|
"DelayBetweenMessagesMSec": 250,
|
||||||
"DelayJitterMSec": 50,
|
"DelayJitterMSec": 50,
|
||||||
"MinAmount": 10,
|
"MinAmount": 10,
|
||||||
"MaxAmount": 100,
|
"MaxAmount": 100,
|
||||||
|
|
||||||
//0.004
|
//0.0016
|
||||||
"LoadSpike": {
|
"LoadSpike": {
|
||||||
"Probability": 0.002,
|
"Probability": 0.0,
|
||||||
"Duration": "00:00:15",
|
"Duration": "00:00:15",
|
||||||
"Parameters": {
|
"Parameters": {
|
||||||
"Delay": "00:00:00.0100000"
|
"Delay": "00:00:00.0100000"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
//0.002
|
//0.0008
|
||||||
"TransactionCorruption": {
|
"TransactionCorruption": {
|
||||||
"Probability": 0,
|
"Probability": 0,
|
||||||
"Duration": "00:00:15",
|
"Duration": "00:00:15",
|
||||||
@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
//0.003
|
//0.003
|
||||||
"UnconfirmedTransaction": {
|
"UnconfirmedTransaction": {
|
||||||
"Probability": 0,
|
"Probability": 0.0008,
|
||||||
"Duration": "00:00:15",
|
"Duration": "00:00:15",
|
||||||
"Parameters": {
|
"Parameters": {
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace QRBee.Api.Services
|
|||||||
private Counter<int> SucceededTransactionsCounter { get; }
|
private Counter<int> SucceededTransactionsCounter { get; }
|
||||||
private Counter<int> FailedTransactionsCounter { get; }
|
private Counter<int> FailedTransactionsCounter { get; }
|
||||||
private Counter<int> CorruptTransactionsCounter { get; }
|
private Counter<int> CorruptTransactionsCounter { get; }
|
||||||
|
private Counter<int> CancelledTransactionsCounter { get; }
|
||||||
private Counter<int> SucceededPaymentConfirmationsCounter { get; }
|
private Counter<int> SucceededPaymentConfirmationsCounter { get; }
|
||||||
private Counter<int> FailedPaymentConfirmationsCounter { get; }
|
private Counter<int> FailedPaymentConfirmationsCounter { get; }
|
||||||
private Counter<long> TotalCreditCardCheckTime { get; }
|
private Counter<long> TotalCreditCardCheckTime { get; }
|
||||||
@ -29,6 +30,7 @@ namespace QRBee.Api.Services
|
|||||||
SucceededTransactionsCounter = meter.CreateCounter<int>("transaction-succeeded", description: "Transaction succeeded");
|
SucceededTransactionsCounter = meter.CreateCounter<int>("transaction-succeeded", description: "Transaction succeeded");
|
||||||
FailedTransactionsCounter = meter.CreateCounter<int>("transaction-failed", description: "Transaction failed");
|
FailedTransactionsCounter = meter.CreateCounter<int>("transaction-failed", description: "Transaction failed");
|
||||||
CorruptTransactionsCounter = meter.CreateCounter<int>("transaction-corrupt", description: "Transaction was corrupted");
|
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");
|
SucceededPaymentConfirmationsCounter = meter.CreateCounter<int>("payment-confirmation-succeeded", description: "Payment confirmation succeeded");
|
||||||
FailedPaymentConfirmationsCounter = meter.CreateCounter<int>("payment-confirmation-failed", description: "Payment confirmation failed");
|
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 AddSucceededTransaction() => SucceededTransactionsCounter.Add(1);
|
||||||
public void AddFailedTransaction() => FailedTransactionsCounter.Add(1);
|
public void AddFailedTransaction() => FailedTransactionsCounter.Add(1);
|
||||||
public void AddCorruptTransaction() => CorruptTransactionsCounter.Add(1);
|
public void AddCorruptTransaction() => CorruptTransactionsCounter.Add(1);
|
||||||
|
public void AddCancelledTransaction() => CancelledTransactionsCounter.Add(1);
|
||||||
public void AddSucceededPaymentConfirmation() => SucceededPaymentConfirmationsCounter.Add(1);
|
public void AddSucceededPaymentConfirmation() => SucceededPaymentConfirmationsCounter.Add(1);
|
||||||
public void AddFailedPaymentConfirmation() => FailedPaymentConfirmationsCounter.Add(1);
|
public void AddFailedPaymentConfirmation() => FailedPaymentConfirmationsCounter.Add(1);
|
||||||
public void AddTotalCreditCardCheckTime(long milliseconds) => TotalCreditCardCheckTime.Add(milliseconds);
|
public void AddTotalCreditCardCheckTime(long milliseconds) => TotalCreditCardCheckTime.Add(milliseconds);
|
||||||
|
|||||||
@ -7,16 +7,20 @@ namespace QRBee.Api.Services
|
|||||||
private readonly IStorage _storage;
|
private readonly IStorage _storage;
|
||||||
private readonly IPaymentGateway _paymentGateway;
|
private readonly IPaymentGateway _paymentGateway;
|
||||||
private readonly ILogger<TransactionMonitoring> _logger;
|
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 bool _started;
|
||||||
private static object _syncObject = new();
|
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;
|
_storage = storage;
|
||||||
_paymentGateway = paymentGateway;
|
_paymentGateway = paymentGateway;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_customMetrics = metrics;
|
||||||
|
|
||||||
if (_started)
|
if (_started)
|
||||||
return;
|
return;
|
||||||
@ -37,7 +41,7 @@ namespace QRBee.Api.Services
|
|||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
await CheckTransactions();
|
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)
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogDebug($"Cancelling transaction: {transaction.MerchantTransactionId}...");
|
_logger.LogDebug($"Cancelling transaction: {transaction.MerchantTransactionId}...");
|
||||||
|
|
||||||
await CancelTransaction(transaction);
|
await CancelTransaction(transaction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -74,6 +79,7 @@ namespace QRBee.Api.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
transaction.Status = TransactionInfo.TransactionStatus.Cancelled;
|
transaction.Status = TransactionInfo.TransactionStatus.Cancelled;
|
||||||
|
_customMetrics.AddCancelledTransaction();
|
||||||
await _storage.UpdateTransaction(transaction);
|
await _storage.UpdateTransaction(transaction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user