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

null の変数を教えてください。が既に null の場合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 に答える