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); } } }
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); } } }
public void Consume(AnotherTestMessage message, IDeliveryContext deliveryContext) { }