5

RabbitMQ を使用して、ASP.net MVC 4 から AMQP メッセージを消費したいとしましょう。System.Web.HttpContext.Current.Applicationにオブジェクトを保存します。このオブジェクトは、BackgroundWorker のインスタンスを内部的に使用してメッセージをリッスンします (リスナーはGlobal.asax.csで作成されます) 。

これはこの操作を実装する良い方法ですか、それとも静的クラス/シングルトンを使用する必要がありますか? 私は ASP.net MVC に不慣れなので、よくわかりません。ASP.net MVC 4 は最適なプラットフォームではないのでしょうか? あなたは何をお勧めします?

目標は、メッセージ トラフィックを監視/ログに記録し、Web インターフェイスから自由にコンシューマを削除/作成/構成できるようにすることです。

私は良い研究を信じているので、これは私の最初のスタックオーバーフロー投稿です。でも、今回は他の方のお話も聞きたいです thx :)

4

1 に答える 1

4

私の意見では、ASP.NET アプリケーションは、RabbitMQ サブスクライバーとしては不十分です。サブスクライバーを Windows サービスとして実装する方がはるかに優れています。

  1. Phil Haack によるこの優れた投稿は、重要なサービスに BackgroundWorker を使用することについてよく考えるべき理由をいくつか示しています。
  2. これは、Web アプリケーションから独立してサブスクライバーを監視および維持できることを意味します。Windows が提供するすぐに使えるツール (タスク モニター、パフォーマンス モニター) をすべて使用して、サービスの動作を理解することができます。
  3. サブスクライバーは、Web アプリケーションとは別にスケーリングできます。Web アプリケーションのインスタンスは 1 つだけ必要な場合がありますが、サブスクライバーのインスタンスは 2 つ必要です。それらを個別のプロセスとして持つことで、そのような細かい制御が可能になります。
于 2013-03-12T09:29:31.560 に答える