私は現在、最終的にWindows Azureに移行するアプリケーションを設計しています。しかし、短期的には、それは自分自身をホストするサーバー上で実行されます。メッセージキューのための良い戦略?
このアプリケーションには、いくつかの個別のWebアプリケーションが含まれています。これらは、基本的にデータを受信するWCFサービスと、ユーザーがデータを管理するサイトです。さらに、さまざまな方法でデータを処理するバックグラウンドで実行されるワーカーサービスが必要になります。
私は非常にデカップルアーキテクチャを使用してこれに熱心です。理想的には、コンポーネント(つまり、Webアプリケーションやワーカーサービス)が互いにできるだけ知りたくないと思っています。メッセージキューを使用することが最善の解決策になるようです.Webアプリケーションは、作業単位を含むメッセージをキューにエンキューすることができ、ワーカーサービスはそれらを取り出して必要に応じて処理することができます。
しかし、私は最終的にはAzureに移行し、私が実行する必要がある再作業の量を最小限に抑えたいということを心に留めて、これを行うための技術を試してみたいクラウドに移行します。 Azureには、私のニーズに最適なQueueコンポーネントが組み込まれています。私がしたいのは、これをできるだけ近く模倣するものを作り出すことです。
は いくつかのオプション(私はSQL Server 2005のバックエンドで、Windows上で.NETを使用しています)があるように見えます- 私がこれまでに発見したものは以下のとおりです。
- MSMQ
- SQL Serverサービスブローカー
- データベーステーブルを使用して独自のローリングして、いくつかの保存されprocsの
誰もがこのための任意の提案を持っている場合、私は思っていた - あるいは誰もが似た何もしてとするものにアドバイスを持っている場合する/しないでください。私はすべての状況が異なることを認識していますが、この場合、私のキューイングの要件はかなり一般的なものだと思いますので、これを行う最善の方法についての他の人の考えを聞きたいのです。事前に
おかげで、
ジョン
ありがとうございました!それはとても役に立ちます。私たちの目的にとってはMSMQがより良い選択肢かもしれないようです - 私はMSMQをAzure Queuingと比較することに大きな一歩を踏みます。たとえば、Azureはメッセージが順番に(または一度だけ)配信されることを保証しないので、対応する動作が何であるかを確認するためにMSMQに対してこれをチェックする必要があります。しかし、これももう一度感謝します。これは非常に有益な比較です。 – John