MassTransitでlocalhostで動作する基本的なデモpub/subアプリケーションを作成しました。ラウンドロビンパターンを無効にし、MassTransitでファンアウトを使用する
私が達成したいのは、メッセージを公開することです。すべてサブスクライバはメッセージを受け取る必要があります。
現時点では、自分の環境では、1つのパブリッシャーアプリと2つのサブスクライバーアプリを開始します。しかし、私がメッセージを公開すると、加入者はメッセージを交互に受信します。
ファンアウト交換タイプがデフォルトであると思いましたか?ただし、ラウンドロビンパターンが適用されます。
私は明示的に
config.ExchangeType = ExchangeType.Fanout;
を追加しましたが、消費者はメッセージ一つまだ1を受け取る...
マイパブ/サブコード:
は公開:
var bus = Bus.Factory.CreateUsingRabbitMq(config =>
{
config.Host(new Uri("rabbitmq://localhost/"), h => { });
config.ExchangeType = ExchangeType.Fanout;
});
var busHandle = bus.Start();
bus.Publish<SomethingHappened>(message);
加入者は、このコードを使用します。
var bus = Bus.Factory.CreateUsingRabbitMq(config =>
{
var host = config.Host(new Uri("rabbitmq://localhost/"), h => { });
config.ReceiveEndpoint(host, "MassTransitExample_Queue", e => e.Consumer<SomethingHappenedConsumer>());
});
var busHandle = bus.Start();
Console.ReadKey();
busHandle.Stop();