Я новичок в области обмена сообщениями, и в настоящее время изучаю использование RabbitMQ как части нашей системной архитектуры для обеспечения обмена сообщениями между различными службами. У меня есть базовый пример RabbitMQ , и он может передавать простое текстовое сообщение по шине. Похоже, EasyNetQ может просто усложнить использование RabbitMQ, хотя у меня возникли небольшие проблемы с его работой.
Вместо простой строки я хотел бы отправить более сложное сообщение, представленное следующим классом:
public class Message
{
public string Text { get; set; }
public int RandomNumber { get; set; }
public DateTime Date { get; set; }
}
Я пытаюсь отправить это, опубликовав его в очереди, а затем попросить подписчика забрать его из очереди. Мой код выглядит следующим образом:
Издательство
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);
}
Приемник
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)));
}
Кажется, что обе стороны соединяются, и издатель сообщает, что сообщение было опубликовано:
DEBUG: Trying to connect
INFO: Connected to RabbitMQ. Broker: 'localhost', VHost: '/'
DEBUG: Published UserQuery+Message:query_lzzfst, CorrelationId ec81fc89-4d60-4a8b-8ba2-7a6d0818d2ed
Подписчик регистрирует следующее:
DEBUG: Trying to connect
INFO: Connected to RabbitMQ. Broker: 'localhost', VHost: '/'
Похоже, подписчик либо не подключается к очереди (или к правильной очереди), либо есть что-то еще, что мне нужно сделать, чтобы фактически получить сообщение?