public void Bus_AsyncSubscriberException_ErrorHandlerCalled()
        {
            ImportiantData data = new ImportiantData {
                Info = "Valuable information"
            };


            // Second bus subscribes to message after it was dispatched and should receive it
            using (var bus = new MessageBus.Core.RabbitMQBus())
            {
                using (IAsyncSubscriber subscriber = bus.CreateAsyncSubscriber(c => c.SetReceiveSelfPublish().UseErrorSubscriber(this)))
                {
                    subscriber.Subscribe <ImportiantData>(Subscribe);

                    subscriber.Open();

                    using (IPublisher publisher = bus.CreatePublisher())
                    {
                        publisher.Send(data);
                    }

                    bool wait = _ev.WaitOne(TimeSpan.FromSeconds(5));

                    wait.Should().BeTrue();
                }
            }
        }
 private async Task Subscribe(ImportiantData data)
 {
     await Task.Run(() =>
     {
         throw new Exception();
     });
 }
 private async Task Subscribe(ImportiantData data)
 {
     await Task.Run(() =>
     {
         throw new Exception();
     });
 }
        public void Bus_AsyncSubscriberException_ErrorHandlerCalled()
        {
            ImportiantData data = new ImportiantData { Info = "Valuable information" };


            // Second bus subscribes to message after it was dispatched and should receive it
            using (var bus = new MessageBus.Core.RabbitMQBus())
            {
                using (IAsyncSubscriber subscriber = bus.CreateAsyncSubscriber(c => c.SetReceiveSelfPublish().UseErrorSubscriber(this)))
                {
                    subscriber.Subscribe<ImportiantData>(Subscribe);

                    subscriber.Open();
                    
                    using (IPublisher publisher = bus.CreatePublisher())
                    {
                        publisher.Send(data);
                    }

                    bool wait = _ev.WaitOne(TimeSpan.FromSeconds(5));

                    wait.Should().BeTrue();
                }
            }
        }
Beispiel #5
0
        public void Bus_DurableBus_AutomaticalyCreated_SubscribesAfterPublishing_MessagesShouldBeReceived()
        {
            // Create a subscriber in order to create queue and bindings then dispose of it
            // queue and bindings should remain
            using (var bus = new MessageBus.Core.RabbitMQBus())
            {
                using (ISubscriber subscriber = bus.CreateSubscriber(c =>
                                                                     c.UseDurableQueue(AutomaticallyCreatedQueueName, true, true)))
                {
                    subscriber.Subscribe((Action <ImportiantData>)(p => { }));
                    subscriber.Open();
                    subscriber.Close();
                }
            }

            ImportiantData data = new ImportiantData {
                Info = "Valuable information"
            };

            // Dispatch message
            using (var bus = new MessageBus.Core.RabbitMQBus())
            {
                using (IPublisher publisher = bus.CreatePublisher())
                {
                    publisher.Send(data);
                }
            }

            ImportiantData   expected = null;
            ManualResetEvent ev       = new ManualResetEvent(false);

            // Second bus subscribes to message after it was dispatched and should receive it
            using (var bus = new MessageBus.Core.RabbitMQBus())
            {
                using (ISubscriber subscriber = bus.CreateSubscriber(c =>
                                                                     c.UseDurableQueue(AutomaticallyCreatedQueueName, true, true)))
                {
                    subscriber.Subscribe <ImportiantData>(p =>
                    {
                        expected = p;

                        ev.Set();
                    });

                    subscriber.Open();

                    bool wait = ev.WaitOne(TimeSpan.FromSeconds(5));

                    wait.Should().BeTrue();
                }
            }

            expected.Should().NotBeNull();

            expected.ShouldBeEquivalentTo(data);
        }
Beispiel #6
0
        public void Bus_DurableBus_SubscribesAfterPublishing_MessagesShouldBeReceived()
        {
            ImportiantData data = new ImportiantData { Info = "Valuable information" };

            // Dispatch message
            using (var bus = new MessageBus.Core.RabbitMQBus())
            {
                using (IPublisher publisher = bus.CreatePublisher())
                {
                    publisher.Send(data);
                }
            }

            ImportiantData expected = null;
            ManualResetEvent ev = new ManualResetEvent(false);

            // Second bus subscribes to message after it was dispatched and should receive it
            using (var bus = new MessageBus.Core.RabbitMQBus())
            {
                using (ISubscriber subscriber = bus.CreateSubscriber(c => c.UseDurableQueue(QueueName)))
                {
                    subscriber.Subscribe<ImportiantData>(p =>
                        {
                            expected = p;

                            ev.Set();
                        });

                    subscriber.Open();

                    bool wait = ev.WaitOne(TimeSpan.FromSeconds(5));

                    wait.Should().BeTrue();
                }
            }

            expected.Should().NotBeNull();

            expected.ShouldBeEquivalentTo(data);
        }
 private async Task Subscribe(ImportiantData data)
 {
     throw new Exception();
 }