コード例 #1
0
        public async Task <CommandResult> ExecuteAsync(ICommand command, CommandReturnType commandReturnType)
        {
            Ensure.NotNull(_commandResultProcessor, "commandResultProcessor");
            var taskCompletionSource = new TaskCompletionSource <CommandResult>();

            _commandResultProcessor.RegisterProcessingCommand(command, commandReturnType, taskCompletionSource);

            try
            {
                await _sendMessageService.SendMessageAsync(Producer, "command", command.GetType().Name, BuildCommandMessage(command, true), command.AggregateRootId, command.Id, command.Items).ConfigureAwait(false);
            }
            catch
            {
                _commandResultProcessor.ProcessFailedSendingCommand(command);
                throw;
            }

            return(await taskCompletionSource.Task.ConfigureAwait(false));
        }
コード例 #2
0
        public async Task <AsyncTaskResult <CommandResult> > ExecuteAsync(ICommand command, CommandReturnType commandReturnType)
        {
            try
            {
                Ensure.NotNull(_commandResultProcessor, "commandResultProcessor");
                var taskCompletionSource = new TaskCompletionSource <AsyncTaskResult <CommandResult> >();
                _commandResultProcessor.RegisterProcessingCommand(command, commandReturnType, taskCompletionSource);

                var result = await _sendMessageService.SendMessageAsync(_producer, CreateENodeMessage(command, true), _commandRouteKeyProvider.GetRoutingKey(command), command.Id, null).ConfigureAwait(false);

                if (result.Status == AsyncTaskStatus.Success)
                {
                    return(await taskCompletionSource.Task.ConfigureAwait(false));
                }
                _commandResultProcessor.ProcessFailedSendingCommand(command);
                return(new AsyncTaskResult <CommandResult>(result.Status, result.ErrorMessage));
            }
            catch (Exception ex)
            {
                return(new AsyncTaskResult <CommandResult>(AsyncTaskStatus.Failed, ex.Message));
            }
        }
コード例 #3
0
        public Task PublishAsync(IApplicationMessage message)
        {
            var enodeMessage = CreateENodeMessage(message);

            return(_sendMessageService.SendMessageAsync(Producer, "applicationMessage", message.GetType().Name, enodeMessage, message.Id, message.Id, message.Items));
        }
コード例 #4
0
        public Task PublishAsync(DomainEventStreamMessage eventStream)
        {
            var message = CreateENodeMessage(eventStream);

            return(_sendMessageService.SendMessageAsync(Producer, "events", string.Join(",", eventStream.Events.Select(x => x.GetType().Name)), message, eventStream.AggregateRootId, eventStream.Id, eventStream.Items));
        }
コード例 #5
0
        public Task PublishAsync(IDomainException exception)
        {
            var message = CreateENodeMessage(exception);

            return(_sendMessageService.SendMessageAsync(Producer, "exception", exception.GetType().Name, message, exception.Id, exception.Id, exception.Items));
        }
コード例 #6
0
        public Task <AsyncTaskResult> PublishAsync(DomainEventStreamMessage eventStream)
        {
            var message = CreateENodeMessage(eventStream);

            return(_sendMessageService.SendMessageAsync(Producer, message, eventStream.GetRoutingKey() ?? eventStream.AggregateRootId, eventStream.Id, eventStream.Version.ToString()));
        }
コード例 #7
0
        public Task <AsyncTaskResult> PublishAsync(IPublishableException exception)
        {
            var message = CreateENodeMessage(exception);

            return(_sendMessageService.SendMessageAsync(Producer, message, exception.GetRoutingKey() ?? exception.Id, exception.Id, null));
        }
コード例 #8
0
        public Task <AsyncTaskResult> PublishAsync(IApplicationMessage message)
        {
            var queueMessage = CreateENodeMessage(message);

            return(_sendMessageService.SendMessageAsync(Producer, queueMessage, message.GetRoutingKey() ?? message.Id, message.Id, null));
        }