私はメッセージングが初めてで、現在、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: '/'
サブスクライバーがキュー (または正しいキュー) に接続していないように見えますか、実際にメッセージを受信するために他に何かする必要がありますか?