7

MassTransit を使用して単純なパブリッシャー/コンシューマー セットを実装しました。コンシューマーに同じキューからメッセージを読み取らせたいと考えています。ただし、実行すると、メッセージの大部分が消費されずにエラー キューに送信されていることがわかります。私が見た議論 ( SOフォーラム) から、これは RabbitMQ (同じキューを指すだけ) では非常に単純なはずですが、機能していません。設定する必要がある追加の構成はありますか?

これが私の発行元です

public class YourMessage { public string Text { get; set; } }
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Publisher");
        Bus.Initialize(sbc =>
        {
            sbc.UseRabbitMqRouting();
            sbc.ReceiveFrom("rabbitmq://localhost/test_queue");
        });
        var x = Console.Read();
        for (var i = 0; i <= 1000; i++)
        {
            Console.WriteLine("Message Number " + i);
            Bus.Instance.Publish(new YourMessage { "Message Number " + i });
        }
    }
}

そして私の消費者

public class YourMessage { public string Text { get; set; } }
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Consumer");
        Bus.Initialize(sbc =>
        {
            sbc.UseRabbitMqRouting();
            sbc.ReceiveFrom("rabbitmq://localhost/test_queue");
            sbc.Subscribe(subs =>
            {
                var del = new Action<IConsumeContext<YourMessage>,YourMessage>((context, msg) =>
                {
                    Console.WriteLine(msg.Text);
                });
                subs.Handler<YourMessage>(del);
            });
        });
        while (true) { }
    }
}
4

3 に答える 3

6

受信者/消費者と発行者を同じキューに入れることはできません。競合するコンシューマーが必要な場合は、同じキューに対して実行されているコンシューマーの複数のインスタンスがあります。

ドキュメントはありますが、このセクションは現在不足しているため、混乱していることを理解しています:http: //readthedocs.org/docs/masstransit/en/latest/configuration/gotchas.html#how-to-setup-a-competing-consumer成功すれば、ドキュメントの作成に役立つでしょう。

于 2012-05-08T21:49:20.417 に答える
4

したがって、解決策はパブリッシャーの行を変更することだったようです:

 sbc.ReceiveFrom("rabbitmq://localhost/test_queue"); 

次のようなものに:

 sbc.ReceiveFrom("rabbitmq://localhost/test_queue_publisher"); 

これにより、パブリッシャーは、消費するように構成されていないメッセージを求めて競合することを防ぎました。

于 2012-05-10T21:32:25.673 に答える
1

GitHub で例を見つけましたhttps://github.com/khalidabuhakmeh/MassTransit.ScaleOut ...

于 2014-05-15T16:51:52.510 に答える