public async Task ExecuteCashinCompleted(CoinEventCashinCompletedMessage message, QueueTriggeringContext context) { try { if (message == null || string.IsNullOrEmpty(message.TransactionHash)) { context.MoveMessageToPoison(message?.ToJson()); } var coinEvent = await _coinEventService.GetCoinEvent(message.TransactionHash); if (coinEvent == null) { return; } if (coinEvent.CoinEventType == CoinEventType.CashinStarted) { await _coinTransactionService.PutTransactionToQueue(coinEvent.TransactionHash, coinEvent.OperationId); } } catch (Exception ex) { await _log.WriteErrorAsync("MonitoringCoinTransactionJob", "Execute", "", ex); if (message.DequeueCount > 10000) { context.MoveMessageToPoison(message.ToJson()); return; } context.MoveMessageToEnd(message.ToJson()); context.SetCountQueueBasedDelay(_settings.MaxQueueDelay, 150); } }
public async Task PublishEvent(ICoinEvent coinEvent, bool putInProcessingQueue = true) { await _coinEventRepository.InsertOrReplace(coinEvent); await _coinEventPublisher.PublishEvent(coinEvent); if (putInProcessingQueue) { await _coinTransactionService.PutTransactionToQueue(coinEvent.TransactionHash, coinEvent.OperationId); } }