I'm new to messaging, and currently investigating using RabbitMQ as part of our system architecture to provide messaging between different services. I've got a basic RabbitMQ example working and it can transmit a basic text message over the bus. It looks like EasyNetQ could simply some of the complexity of using RabbitMQ, though I'm having a little trouble getting it working.
Instead of just a string, I'd like to send a more advanced message represented by the following class:
public class Message
{
public string Text { get; set; }
public int RandomNumber { get; set; }
public DateTime Date { get; set; }
}
I'm trying to send this by publishing it to the queue, and then have the subscriber pick it up off the queue. My code is as follows:
Publisher
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
var message = new Message() { Text = "Hello World", RandomNumber = new Random().Next(1,100), Date = DateTime.Now };
bus.Publish<Message>(message);
}
Receiver
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
bus.Subscribe<Message>("test", m => Console.WriteLine(string.Format("Text: {0}, RandomNumber: {1}, Date: {2}", m.Text, m.RandomNumber, m.Date)));
}
Both sides seem to connect, and the publisher reports that the message was published:
DEBUG: Trying to connect
INFO: Connected to RabbitMQ. Broker: 'localhost', VHost: '/'
DEBUG: Published UserQuery+Message:query_lzzfst, CorrelationId ec81fc89-4d60-4a8b-8ba2-7a6d0818d2ed
The subscriber logs the following:
DEBUG: Trying to connect
INFO: Connected to RabbitMQ. Broker: 'localhost', VHost: '/'
It looks like the subscriber is either not connecting to a queue (or the correct queue), or there is something else I need to do to actually receive the message?