1

バックグラウンド

私のグループは、MassTransit とメッセージング全般の完全な初心者です。オンラインで見つけた簡単なデモは理解できますが、重要なシナリオを設定する方法については混乱しています。(多くのプロデューサー、多くのコンシューマー、コンシューマーがプロデューサーに通信する)

現在、サードパーティの Web サービス呼び出しは、同期呼び出しを介して Web コードから直接行っています。それらのいくつかは、私たちのコードの直接のせいではないブラウザーのタイムアウトや YSOD の点で、非常に遅く、信頼性が低いことで有名です。これらの同期呼び出しを、再試行とポイズン キューのメッセージと結果整合性に置き換えたいと考えています。

また、次のバッチが実行されるのを待つのではなく、リアルタイムの処理に近づけるために、さまざまなスケジュール/バッチ タスクをメッセージングに置き換えたいと考えています。

私たちの Web サイトは、ハードウェア ロード バランサーの背後にある 6 台の IIS サーバー ファームで実行されています。スケジュールされたタスクを実行する 2 つの追加の「アプリケーション」サーバーがあります。新しいワーカー サービスをアプリ サーバーに配置するか、8 つのサーバーすべてに配置することになると思います。

質問

だから... MTドキュメントの「一般的な落とし穴」セクションでは、各アプリケーションには独自のアドレスが必要であると書かれています。私の質問は、この場合のアプリケーションの正確な定義についてです。

Web サイトを実行している 6 つの Web サーバーがあります。これらのそれぞれに一意のアドレスが必要ですか、それともすべて「rabbitmq://localhost/MyApp/Website」にすることができますか? IIS が複数のワーカー プロセス用に構成されている場合はどうなりますか? それらのそれぞれにも異なるウサギのアドレスが必要ですか?

同じ質問が、私の 2 つのアプリケーション サーバーにも当てはまります。両方のボックスで同じワーカーを実行している場合、異なるアドレスが必要ですか? 競合するコンシューマーにアドレスを共有させたい場合、「イベント」タイプのメッセージをすべての人に配信したい場合は、異なるアドレスにする必要があると言うものもあります。

イベント (ブロードキャスト) とコマンド (1 回消費) の両方のメッセージをワーカー クラスターに送信する必要がある場合はどうすればよいでしょうか? (より多くの負荷を処理するために、同じワーカーの複数のインスタンス。)

コンシューマーを Web アプリケーションで直接ホストしている場合はどうなりますか? (これが最初から良いアイデアかどうかはわかりません。)

リクエスト/レスポンス メッセージはどうですか? 応答は元の Web サーバーに戻るはずだと思います。そうしないと、MT 要求呼び出しがブロック解除されないか、せいぜいタイムアウトになります。

4

1 に答える 1

2

の各インスタンスには、IServiceBus独自の RecieveFrom アドレスが必要です。ええ、複数のワーカー プロセスがある場合は、それぞれに独自のキューが必要です。Web アプリでは、これに一時キューを使用できます。

競合するコンシューマの場合、コンシューマのIServiceBus1 つである各プロセスは正確なコピーである必要があります。競合する必要のないイベントがある場合は、独自のプロセスが必要です。

于 2013-11-01T18:57:52.983 に答える