Esempio n. 1
0
        public void One_publisher_one_subscriber_rich_object_messages()
        {
            var topic = "";

            var message1 = new TestMessage
            {
                MessageId = Guid.NewGuid(),
                Payload   = "This is the message's payload"
            };

            var message2 = new AnotherTestMessage
            {
                MessageId = Guid.NewGuid(),
                Payload   = "This is another message's payload"
            };

            var tcs1 = new TaskCompletionSource <TestMessage>();
            var tcs2 = new TaskCompletionSource <AnotherTestMessage>();

            using (var publisher = CreatePublisher())
            {
                var port = publisher.Uri.Port;
                using (var subscriber = CreateSubscriber(port, topic))
                {
                    subscriber.On <TestMessage>(m => { tcs1.SetResult(m); });
                    subscriber.On <AnotherTestMessage>(m => { tcs2.SetResult(m); });
                    subscriber.Start();

                    // Let the subscriber connect to the publisher before publishing messages
                    Thread.Sleep(500);

                    publisher.PublishMessage(topic, message1);
                    publisher.PublishMessage(topic, message2);

                    Task.WaitAll(new Task[] { tcs1.Task, tcs2.Task }, WaitTimeout);

                    var result1 = tcs1.Task.Result;
                    var result2 = tcs2.Task.Result;

                    Assert.IsAssignableFrom <TestMessage>(result1);
                    Assert.Equal(message1.MessageId, result1.MessageId);
                    Assert.Equal(message1.Payload, result1.Payload);

                    Assert.IsAssignableFrom <AnotherTestMessage>(result2);
                    Assert.Equal(message2.MessageId, result2.MessageId);
                    Assert.Equal(message2.Payload, result2.Payload);
                }
            }
        }
Esempio n. 2
0
        public void One_publisher_one_subscriber_rich_object_messages()
        {
            var topic = "";

            var message1 = new TestMessage
            {
                MessageId = Guid.NewGuid(),
                Payload = "This is the message's payload"
            };

            var message2 = new AnotherTestMessage
            {
                MessageId = Guid.NewGuid(),
                Payload = "This is another message's payload"
            };

            var tcs1 = new TaskCompletionSource<TestMessage>();
            var tcs2 = new TaskCompletionSource<AnotherTestMessage>();

            using (var publisher = CreatePublisher())
            {
                var port = publisher.Uri.Port;
                using (var subscriber = CreateSubscriber(port, topic))
                {
                    subscriber.On<TestMessage>(m => { tcs1.SetResult(m); });
                    subscriber.On<AnotherTestMessage>(m => { tcs2.SetResult(m); });
                    subscriber.Start();

                    // Let the subscriber connect to the publisher before publishing messages
                    Thread.Sleep(500);

                    publisher.PublishMessage(topic, message1);
                    publisher.PublishMessage(topic, message2);

                    Task.WaitAll(new Task[] { tcs1.Task, tcs2.Task }, WaitTimeout);

                    var result1 = tcs1.Task.Result;
                    var result2 = tcs2.Task.Result;

                    Assert.IsAssignableFrom<TestMessage>(result1);
                    Assert.AreEqual(message1.MessageId, result1.MessageId);
                    Assert.AreEqual(message1.Payload, result1.Payload);

                    Assert.IsAssignableFrom<AnotherTestMessage>(result2);
                    Assert.AreEqual(message2.MessageId, result2.MessageId);
                    Assert.AreEqual(message2.Payload, result2.Payload);
                }
            }
        }
Esempio n. 3
0
 public void Consume(AnotherTestMessage message, IDeliveryContext deliveryContext)
 {
 }