public Task <ICommandResult> Submit <TCommand>(TCommand command)
            where TCommand : ICommand
        {
            var handler = _commandFactory.CreateCommandHandler <TCommand>();
            var result  = handler.Handle(command);

            return(result);
        }
        private void OnMessageReceivod(object sender, BasicDeliverEventArgs eventArgs)
        {
            Console.WriteLine("收到信息");
            var             model = ((EventingBasicConsumer)sender).Model;
            ICommandHandler handler;

            try
            {
                model.BasicAck(eventArgs.DeliveryTag, false);
                handler = _factory.CreateCommandHandler(eventArgs.BasicProperties.Type);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                model.BasicAck(eventArgs.DeliveryTag, false);
                handler = null;
            }

            if (handler != null)
            {
                Task task = new Task(async() =>
                {
                    try
                    {
                        //Console.WriteLine("我开始执行");
                        var responseBuffer               = await handler.HandleAsync(eventArgs.Body.ToArray());
                        var responseProperties           = _model.CreateBasicProperties();
                        responseProperties.CorrelationId = eventArgs.BasicProperties.CorrelationId;
                        _model.BasicPublish("", eventArgs.BasicProperties.ReplyTo, responseProperties, responseBuffer);
                        //Console.WriteLine("");
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                });
                task.Start();
            }
        }
Beispiel #3
0
 public async Task ExecuteAsync <TCommand>(TCommand command, CancellationToken cancellationToken = default)
 {
     var commandHandler = commandHandlerFactory.CreateCommandHandler <TCommand>();
     await commandHandler.HandleAsync(command, cancellationToken).ConfigureAwait(false);
 }