我是消息传递的新手,目前正在研究使用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: '/'
看起来订阅者要么没有连接到队列(或正确的队列),要么我需要做其他事情才能真正接收到消息?