public void SecondServiceLocatorResolves()
        {
            var bus = new Bus();

            #region composition root

            var catalog = new AggregateCatalog();
            catalog.Catalogs.Add(new AssemblyCatalog(typeof(Message2Consumer).GetTypeInfo().Assembly));
            var compositionContainer = new CompositionContainer(catalog);
            var message2Consumer     = new Message2Consumer();
            ServiceLocator.SetLocatorProvider(() => new MefServiceLocator(compositionContainer));

            #endregion

            bus.SetServiceLocator(new MefServiceLocator(compositionContainer));
            compositionContainer.ComposeExportedValue(message2Consumer);
#if SUPPORT_ASYNC_CONSUMER
            var message3AsyncConsumer = new Message3AsyncConsumer();
            compositionContainer.ComposeExportedValue(message3AsyncConsumer);
#endif
            compositionContainer.ComposeExportedValue(new Pipe());
            compositionContainer.ComposeExportedValue(new Pipe23());
            bus.SetServiceLocator(new MefServiceLocator(compositionContainer));

            var directory = Path.GetDirectoryName(new Uri(GetType().GetTypeInfo().Assembly.CodeBase).LocalPath);
            bus.AddHandlersAndTranslators(directory, "Tests*.dll", "Tests.Mocks");

            bus.Handle(new Message2());

            Assert.Equal(1, message2Consumer.MessageReceivedCount);
        }
        public void ManuallyComposedWithTwoTranslatorsFirstTypeHandlesMessageProperly()
        {
            var message1 = new Message1 {
                CorrelationId = "1234"
            };

            var bus = new Bus();

            var pipe1 = new Pipe();

            bus.AddTranslator(pipe1);
            var pipe2 = new Pipe();

            bus.AddTranslator(pipe1);

            var message2Consumer = new Message2Consumer();

            bus.AddHandler(message2Consumer);

            bus.Handle(message1);

            Assert.AreSame(message1, Pipe.LastMessageProcessed);
            Assert.IsNotNull(Message2Consumer.LastMessageReceived);
            Assert.AreEqual(message1.CorrelationId, Message2Consumer.LastMessageReceived.CorrelationId);
        }
        public void MeasureCapacity()
        {
            var message1 = new Message2 {
                CorrelationId = "1234"
            };

            var bus = new Bus();
            var message2Consumer = new Message2Consumer();

            bus.AddHandler(message2Consumer);
            var stopwatch    = Stopwatch.StartNew();
            var messageCount = 53000000;

            for (var i = 0; i < messageCount; ++i)
            {
                bus.Handle(message1);
            }
            Console.WriteLine("{0} million in {1}", messageCount / 1.Million(), stopwatch.Elapsed.ToEnglishString());
            Console.WriteLine(message2Consumer.MessageReceivedCount);
            Assert.AreSame(message1, Message2Consumer.LastMessageReceived);
            Assert.AreEqual(messageCount, message2Consumer.MessageReceivedCount);

            message2Consumer = new Message2Consumer();
            stopwatch        = Stopwatch.StartNew();
            for (var i = 0; i < messageCount; ++i)
            {
                message2Consumer.Handle(message1);
            }
            Console.WriteLine(stopwatch.Elapsed.ToEnglishString());
        }
Example #4
0
        public void RemoveHandlerWithUnknownHandlerDoesNotFail()
        {
            var bus = new Bus();

            var message2Consumer = new Message2Consumer();

            bus.AddHandler(message2Consumer);
            bus.RemoveHandler(new ActionConsumer <Message1>(_ => { }));
        }
Example #5
0
        public void ManuallyComposedTypeHandlesWithDuplicateHandlerMulticasts()
        {
            var bus = new Bus();

            var message2Consumer = new Message2Consumer();

            bus.AddHandler(message2Consumer);
            bus.AddHandler(message2Consumer);

            var message1 = new Message2 {
                CorrelationId = "1234"
            };

            bus.Handle(message1);
            Assert.AreEqual(2, message2Consumer.MessageReceivedCount);
        }
        public void ManuallyComposedTypeHandlesWithRemovedDuplicateHandlerDoesNotMulticasts()
        {
            var bus = new Bus();

            var message2Consumer = new Message2Consumer();
            var token1           = bus.AddHandler(message2Consumer);
            var token2           = bus.AddHandler(message2Consumer);

            bus.RemoveHandler(message2Consumer, token2);

            var message1 = new Message2 {
                CorrelationId = "1234"
            };

            bus.Handle(message1);
            Assert.AreEqual(1, message2Consumer.MessageReceivedCount);
        }