public void CanSendMessageToMultipleSubscribers()
        {
            var latch      = new CountDownLatch(3);
            var messageBus = new InMemoryMessageBus();

            messageBus.Subscribe <SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.Subscribe <SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.Subscribe <SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });

            bool success = latch.Wait(100);

            Assert.True(success, "Failed to receive all messages.");
        }
示例#2
0
        private static async void MessageBusTest()
        {
            IMessageBus messageBus = new InMemoryMessageBus();

            messageBus.SubscribeAsync <SimpleMessageA>(msg =>
            {
                Console.WriteLine(msg.Data);
            });
            await messageBus.PublishAsync(new SimpleMessageA { Data = "hello" });
        }
        public async Task CanCheckMessageCounts()
        {
            var messageBus = new InMemoryMessageBus(o => o.LoggerFactory(Log));
            await messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });

            Assert.Equal(1, messageBus.MessagesSent);
            Assert.Equal(1, messageBus.GetMessagesSent <SimpleMessageA>());
            Assert.Equal(0, messageBus.GetMessagesSent <SimpleMessageB>());
        }
        public void CanSubscribeToAllMessageTypes()
        {
            var latch      = new CountDownLatch(3);
            var messageBus = new InMemoryMessageBus();

            messageBus.Subscribe <object>(msg => {
                latch.Signal();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });
            messageBus.PublishAsync(new SimpleMessageB {
                Data = "Hello"
            });
            messageBus.PublishAsync(new SimpleMessageC {
                Data = "Hello"
            });

            bool success = latch.Wait(100);

            Assert.True(success, "Failed to receive all messages.");
        }
        public void CanSendMessage() {
            var resetEvent = new AutoResetEvent(false);
            var messageBus = new InMemoryMessageBus();
            messageBus.Subscribe<SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                resetEvent.Set();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });

            bool success = resetEvent.WaitOne(100);
            Assert.True(success, "Failed to receive message.");
        }
        public void WillReceiveDerivedMessageTypes()
        {
            var latch      = new CountDownLatch(2);
            var messageBus = new InMemoryMessageBus();

            messageBus.Subscribe <ISimpleMessage>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });
            messageBus.PublishAsync(new SimpleMessageB {
                Data = "Hello"
            });
            messageBus.PublishAsync(new SimpleMessageC {
                Data = "Hello"
            });

            bool success = latch.Wait(100);

            Assert.True(success, "Failed to receive all messages.");
        }
        public void CanSendMessage()
        {
            var resetEvent = new AutoResetEvent(false);
            var messageBus = new InMemoryMessageBus();

            messageBus.Subscribe <SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                resetEvent.Set();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });

            bool success = resetEvent.WaitOne(100);

            Assert.True(success, "Failed to receive message.");
        }
        public void CanTolerateSubscriberFailure() {
            var latch = new CountDownLatch(2);
            var messageBus = new InMemoryMessageBus();
            messageBus.Subscribe<SimpleMessageA>(msg => {
                throw new ApplicationException();
            });
            messageBus.Subscribe<SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.Subscribe<SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });

            bool success = latch.Wait(900);
            Assert.True(success, "Failed to receive all messages.");
        }
        public void CanSendMessageToMultipleSubscribers() {
            var latch = new CountDownLatch(3);
            var messageBus = new InMemoryMessageBus();
            messageBus.Subscribe<SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.Subscribe<SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.Subscribe<SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });

            bool success = latch.Wait(100);
            Assert.True(success, "Failed to receive all messages.");
        }
        public void CanTolerateSubscriberFailure()
        {
            var latch      = new CountDownLatch(2);
            var messageBus = new InMemoryMessageBus();

            messageBus.Subscribe <SimpleMessageA>(msg => {
                throw new ApplicationException();
            });
            messageBus.Subscribe <SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.Subscribe <SimpleMessageA>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });

            bool success = latch.Wait(900);

            Assert.True(success, "Failed to receive all messages.");
        }
        public void WillReceiveDerivedMessageTypes() {
            var latch = new CountDownLatch(2);
            var messageBus = new InMemoryMessageBus();
            messageBus.Subscribe<ISimpleMessage>(msg => {
                Assert.Equal("Hello", msg.Data);
                latch.Signal();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });
            messageBus.PublishAsync(new SimpleMessageB {
                Data = "Hello"
            });
            messageBus.PublishAsync(new SimpleMessageC {
                Data = "Hello"
            });

            bool success = latch.Wait(100);
            Assert.True(success, "Failed to receive all messages.");
        }
        public void CanSubscribeToAllMessageTypes() {
            var latch = new CountDownLatch(3);
            var messageBus = new InMemoryMessageBus();
            messageBus.Subscribe<object>(msg => {
                latch.Signal();
            });
            messageBus.PublishAsync(new SimpleMessageA {
                Data = "Hello"
            });
            messageBus.PublishAsync(new SimpleMessageB {
                Data = "Hello"
            });
            messageBus.PublishAsync(new SimpleMessageC {
                Data = "Hello"
            });

            bool success = latch.Wait(100);
            Assert.True(success, "Failed to receive all messages.");
        }
 public void PublishEvent(IntegrationRequestEvent @event)
 {
     inMemoryBus.PublishAsync(@event);
 }