Exemple #1
0
        /// <summary>
        /// Send all messages to a delegate with one/many handlers.
        /// </summary>
        /// <typeparam name="TMessage">Type of message.</typeparam>
        /// <param name="messageDelegator">Message delegator.</param>
        /// <param name="messages">Messages to send.</param>
        /// <param name="cancellationToken">Optional cancellation token to be passed to handlers.</param>
        /// <returns>Asynchronous task which can be awaited for completion.</returns>
        public static Task SendAllAsync <TMessage>(this IMessageDelegator messageDelegator,
                                                   IEnumerable <TMessage> messages,
                                                   CancellationToken cancellationToken = default(CancellationToken))
            where TMessage : class
        {
            if (messageDelegator == null)
            {
                throw new System.ArgumentNullException(nameof(messageDelegator));
            }

            if (messages == null)
            {
                throw new System.ArgumentNullException(nameof(messages));
            }

            // Convert to array.
            TMessage[] messageList = messages.ToArray();

            // Task list.
            Task[] sendTasks = new Task[messageList.Length];

            // Send each messages to start the tasks and add to task list.
            for (int i = 0; i < messageList.Length; i++)
            {
                sendTasks[i] = messageDelegator.SendAsync(messageList[i], cancellationToken);
            }

            // Wait for all messages to be sent.
            return(Task.WhenAll(sendTasks));
        }
        public void Setup()
        {
            // Delegator.
            var reg = new SingleMessageHandlerRegistration();

            reg.Register <TestMessage>(handleMessage);
            _delegator = new MessageDelegator(reg.BuildMessageHandlerResolver());

            // Mediatr.
            var requestHandler = new TestMediatrRequestHandler();

            _mediator = new Mediator((t) => requestHandler, (t) => Enumerable.Empty <object>());

            // CQRSLite.
            Router router = new Router();

            router.RegisterHandler <TestCqrsliteCommand>(handleCqrsliteCommand);
            _commandSender = router;
        }
        public void Setup()
        {
            int numOfIterations = 100000;

            var reg             = new MultiMessageHandlerRegistration();
            var router          = new Router();
            var mediatrHandlers = new List <INotificationHandler <TestMediatrNotif> >();

            for (int i = 0; i < numOfIterations; i++)
            {
                // Register handlers N number of times each.
                reg.Register <TestMessage>(handleMessage);
                router.RegisterHandler <TestCqrsliteEvent>(handleCqrsliteMessage);
                mediatrHandlers.Add(new TestMediatrNotifHandler());
            }

            // Delegator.
            _delegator = new MessageDelegator(reg.BuildMessageHandlerResolver());
            // CQRSLite
            _eventPublisher = router;
            // Mediatr
            _mediator = new Mediator((t) => new object(), (t) => mediatrHandlers);
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="commandDispatcher">Command dispatcher.</param>
 /// <param name="productReadSideRepository">Product read side repository.</param>
 public ProductsController(IMessageDelegator commandDispatcher, IProductReadSideRepository productReadSideRepository)
 {
     _productRepository = productReadSideRepository;
     _commandDelegator  = commandDispatcher;
 }
Exemple #5
0
 public ActivateProductUseCase(IMessageDelegator commandDispatcher)
 {
     _commandDispatcher = commandDispatcher;
 }
 public PublishingProductRepository(IProductRepository inner, IMessageDelegator messageDelegator)
 {
     _inner            = inner;
     _messageDelegator = messageDelegator ?? throw new System.ArgumentNullException(nameof(messageDelegator));
 }
Exemple #7
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="messageDelegator">Message delegator.</param>
 internal MessageProcessorHost(IMessageDelegator messageDelegator)
 {
     _messageDelegator = messageDelegator;
 }
Exemple #8
0
 public RegisterProductUseCase(IMessageDelegator commandDispatcher)
 {
     _commandDispatcher = commandDispatcher;
 }
Exemple #9
0
 public LoggingCommandDelegator(IMessageDelegator inner, ITestOutputHelper outputHelper)
 {
     _inner        = inner;
     _outputHelper = outputHelper;
 }