public Task NotifyMessageExecutedAsync(MessageExecutingResult messageResult)
 {
     if (messageResult.Status == MessageExecutingStatus.Success)
     {
         _transportationContext.Ack();
         _logger.Info($"Result={messageResult}\r\nRawMessage={JsonConvert.SerializeObject(messageResult.RawMessage)}");
     }
     else
     {
         _logger.Error($"Result={messageResult}\r\nRawMessage={JsonConvert.SerializeObject(messageResult.RawMessage)}\r\n{messageResult.StackTrace}");
     }
     return(Task.CompletedTask);
 }
예제 #2
0
            public Task OnCommandExecutedAsync(CommandResult commandResult)
            {
                if (!string.IsNullOrEmpty(_commandMessage.SagaId))
                {
                    if (commandResult.Status != CommandStatus.Failed ||
                        (!string.IsNullOrEmpty(commandResult.ResultType) && commandResult.ResultType != "System.String" && commandResult.ResultType.EndsWith("DomainException")))
                    {
                        _messageContext.Ack();
                    }
                    else
                    {
                        _logger.Error($"ENode command executed failed: [{commandResult.ResultType}]{commandResult.Result}, commandData: {_commandMessage.CommandData}, commandType: {_messageContext.GetMessageType()}, sagaId: {_commandMessage.SagaId}");
                    }
                    return(Task.CompletedTask);
                }

                _messageContext.Ack();
                if (!string.IsNullOrEmpty(_commandMessage.ReplyAddress))
                {
                    return(_sendReplyService.SendReply((int)CommandReturnType.CommandExecuted, commandResult, _commandMessage.ReplyAddress));
                }
                return(Task.CompletedTask);
            }
            public void NotifyEventProcessed()
            {
                _messageContext.Ack();

                if (!_eventConsumer._sendEventHandledMessage)
                {
                    return;
                }

                if (!_domainEventStreamMessage.Items.TryGetValue("CommandReplyAddress", out string replyAddress) || string.IsNullOrEmpty(replyAddress))
                {
                    return;
                }
                _domainEventStreamMessage.Items.TryGetValue("CommandResult", out string commandResult);

                _eventConsumer._sendReplyService.SendReply((int)CommandReturnType.EventHandled, new DomainEventHandledMessage
                {
                    CommandId       = _domainEventStreamMessage.CommandId,
                    AggregateRootId = _domainEventStreamMessage.AggregateRootId,
                    CommandResult   = commandResult
                }, replyAddress);
            }