0

我是 EasyNetQ 和 RabbitMQ 的新手。不幸的是,我在使用消息时遇到问题,我不确定是因为我做错了发布还是我的消费不正确。我可以通过发布看到,它确实发送到队列并消费它确实将它从队列中取出。但是,当返回消息时,我得到 null :S 我正在使用IAdvancedBus

发布代码片段:

public void send(RegistrationCreatedEvent obj )
{
   MessageBus.Publish(Exchange, RoutingKey, true, new Message<RegistrationCreatedEvent>(obj));
}

消费代码片段:

public void Receive()
{
  MessageBus.Consume(Queue, (messageBody, properties, info) => Task.Factory.StartNew(() =>
  {
    var stringMessage = Encoding.Default.GetString(messageBody);

    json = JsonConvert.DeserializeObject<RegistrationCreatedEvent>(stringMessage);
                Console.WriteLine($"Message Received:  {json}");
    }));
}
4

2 回答 2

0

你能告诉我们哪个变量是空的吗?如果messageBody已经为空,您可能在发布时遇到问题。然后我建议你停止你的消费者,向队列发送一条消息,然后使用管理插件https://www.rabbitmq.com/management.html查看消息

而且由于您无论如何都希望对您的消息进行反序列化,因此我建议您使用内置的 messageSerializer 而不是自己做。看起来像这样:

bus.Consume(queue, x => x.Add<RegistrationCreatedEvent>((message, info) => 
{
  //do something with message.body
}));
于 2016-12-22T01:39:42.337 回答
0

解决方案是让我的模型类属性公开而不是私有。

于 2016-12-22T11:38:12.267 回答