2011-06-28 10 views
1

SQL Serverに長いプロセス要求を送信するASP.NET Webアプリケーションがあります。これを変更して、Web要求をキューに送信し、キューからWindowsサービスのPOPメッセージを送信し、それをSQL Serverに1つずつ送信したいと考えています。現在、キューにどのようなマカニズムが使用されているのかを判断する必要があります。.NETとSQL ServerのキューMachanism

少数以下のように、検討されているキューを実装するためのオプション:キューをシミュレートするため)

1データベーステーブルを、または

2)Windowsのメッセージキュー

私が知りたいです賛否両論ウィンドウMSMQ、データベーステーブルを使用しています。

更新

その他のソリューション

サービスブローカ:レムスRusanu

によって提案されたそれは深い学習曲線が必要です。 Perfmoneceは未知のままです。

おかげ

答えて

4

にMSMQまたはWCFをミックスする必要はありません、ちょうどビルトイン機能をキューイングSQL Serverを使用します。例については、Asynchronous procedure executionを参照してください。この方法では、MSMQ要求をデキューしてDBロングコールを処理する新しいプロセスは必要ありません。別のメッセージストアとDBストロークを処理する必要はなく、メッセージとデータの両方に対して一貫性のあるバックリストアがあります。ハイアベイラビリティの状況ではデータと一緒にSQL Serverのキューは、MSMQ(スループットと容量の両方)よりも大幅に高いマージンに拡張されます。 MSMQを使用するには、これらの問題すべてに対してソリューションを提供する必要があります。一貫したバックアップ/リストア、HAインシデントの場合はデータベースと一緒にMSMQをフェールオーバーし、MSMQメッセージを読み込んでDB作業を行うプロセスを提供します。

+0

@Remus Rusanu、ありがとう。それは良い解決策と聞こえる。私は読んで、それが適切であれば答えとして投票に戻ってきます。 – Pingpong

+0

@@ Remus Rusanu、データベーストリガーはキューにメッセージを挿入できますか? – Pingpong

+0

はい、テーブルトリガーはそれを行うことができます –

3

データベーステーブルを使用すると、トリガーを使用していくつかの巧妙なものを考案することができる場合を除き、データベースの変更をチェックするためにポーリングを必要とします。 MSMQはそうではありませんので、効率的に勝ちます。

キューは、消費しているデータベースがダウンしている場合でも、配信を保証できます。データベーステーブルはできません。

私は、データベーステーブルがあなたにもっと馴染んでいると確信しています。 MSMQは新技術であり、常にリスクを伴います。

キューを設定することは、アプリケーション内の別の動く部分を意味します。複雑さを増す可能性があります。

私は、3つ目の方法があると思います。つまり、プロデューサ/コンシューマを持つスレッドキューデータ構造です。 .NETクラスを見て、そのようなものが存在するかどうかを確認してください。おそらく、.NETのマルチスレッド機能は、MSMQの複雑さを軽減しながら、必要な非同期処理を提供します。

+0

@duffymo MSMQまたはデータベーステーブルのいずれかを使用する場合は、ポーリングが必要です。 – Pingpong

+0

SQL Serverベースのキューでポーリングする必要はなく、アクティベーションが組み込まれています。http://msdn.microsoft.com/en-us/library/ms171617.aspx –

+0

イベントベースのモデルがあると想定しましたJava JMSが使用するMSMQのように。私はそれについて間違っている。 – duffymo

1

WCF経由のMSMQ実装を使用します。そのシンプル - 信じられないほどセットアップが簡単で、受信機コードもダウンしています。

Asp.Netからの呼び出しは簡単です。

を参照してください:(その他) http://blogs.msdn.com/b/skaufman/archive/2008/02/20/processing-multiple-queues-in-fifo-order-with-wcf.aspx

+0

WCFのMSMQにはオーバーヘッドがあり、過剰です。 – Pingpong

+1

これは、asp.netが単純な文書を提供することが難しいと言うようなものです。私は正直言ってそれに賛成できません - 実行可能な時間はほとんどありません - その高い可用性 - 信じられないほど高いトランザクション率を持つサイトでwcfが動作することは言うまでもありません。ここの利点は、あなたのサービスが去ることができることです - とにかく..単なるアイデア。我々は大きな成功を収めてそれを実行します。あなたはどのような取引量を見ていますか? –

+0

WCFでMSQMとMSMQを選択する必要がある場合、私のシナリオではMSMQがWCFのMSMQより適していると思います。しかし、このポストはデータベーステーブルキューとMSMQの関係です。 – Pingpong

関連する問題