Я новичок в обмене сообщениями и в настоящее время изучаю возможность использования 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);
}
Получатель
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
bus.Subscribe("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: '/'
Похоже, подписчик либо не подключается к очереди (или правильной очереди), либо мне нужно что-то еще сделать, чтобы получить сообщение?