Использование EasyNetQ с RabbitMQ для публикации и получения сообщений

Я новичок в обмене сообщениями и в настоящее время изучаю возможность использования 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: '/'

Похоже, подписчик либо не подключается к очереди (или правильной очереди), либо мне нужно что-то еще сделать, чтобы получить сообщение?

7
задан ccellar 25 February 2013 в 16:01
поделиться