public async Task <string> HandleMessageAsync(ReceivedMessageArgs messageObject) { var baseMessage = JsonConvert.DeserializeObject <BaseTransactionMessage>(messageObject.Message); if (await _requestsRepository.IsHandledOrSaveRequestAsync(baseMessage.Id, GetRequestIdInvalidationDate())) { return($"Already handled: {baseMessage.Id}"); } try { switch (messageObject.Action) { case TransactionMessageActions.MoveTask_Complete: return(await CompleteTransactionAsync(messageObject.Message)); case TransactionMessageActions.MoveTask_Rollback: return(await RollbackTransactionAsync(messageObject.Message)); default: return(await HandleMessageInternalAsync(messageObject.Message, messageObject.Action)); } } catch { await _requestsRepository.DeleteRequestIdAsync(baseMessage.Id); throw; } }
private bool CheckIsHandleRequired(BaseMessage message, RequestsRepository requestsRepository) { return(!requestsRepository.IsHandledOrSaveRequestAsync( message.Id, GetRequestIdInvalidationDate()) .GetAwaiter() .GetResult()); }