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()); }
public void RemoveHandlerWithUnknownHandlerDoesNotFail() { var bus = new Bus(); var message2Consumer = new Message2Consumer(); bus.AddHandler(message2Consumer); bus.RemoveHandler(new ActionConsumer <Message1>(_ => { })); }
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); }