2010-11-30 19 views
12

1台のSQL Server、1-n処理サーバー、1-nデータサプライヤー(ネットワーク上のハードウェアデバイス)が存在する分散システムがあります。提供されているデータは、リレーショナルDB構造に入る前に処理する必要があります - データを解析し、処理し、リレーショナル構造に挿入するために、処理サーバーによって実行されます(Windowsサービス - .netコードとして)。 MSMQサーバーの複雑さをミックスに追加したいとは思えません。キューとしてDB(フラットテーブル)を使用するなど、MSMQに代わる良い方法がありますか? .NETはDBキューに対してすぐに使用できるサポートを提供していますか、または信頼できるキューイングのための別のオプションがありますか?
おかげをMSMQに変換するか、MSMQに変換しないか? (またはSQLテーブルをキューとして)

EDIT:(11月29日、午後11時30分)
は、SQLサービスブローカ(SSB)のように聞こえるトリックを行う可能性があります。
http://www.netframeworkdev.com/windows-communication-foundation/service-broker-vs-msmq-as-reliable-queueing-mechanism-63981.shtml

EDIT:(11月30日、7:45)
このテーマに関する他の非常に便利なリンクが見つかりました:私もそのデータの最大/最小サイズに探しています
http://social.msdn.microsoft.com/Forums/en-US/sqlservicebroker/thread/52687510-0852-44f3-bfcd-83610d1c1b9a
をが供給される。彼らの頭の上の誰かが、MSMQおよび/またはSSBによって収容された最大サイズを知っていますか?
MSMQ:4MBのメッセージサイズ
SSB:2GBメッセージサイズ

EDIT:(11月30日、8; 15am)
ここでMSMQ & SSBの間に大きな比較:私が使用する
Good Strategy for Message Queuing?

答えて

4

MSMQは複雑さが増し、メッセージを簡単にバックアップできるため、システムを再起動しても処理が続行されます。 SSBのようなものを使うことができます。

+2

特にトランザクションMSMQを使用します。 – Steven

2

2つのオプションのうち、MSMQは実際はより単純です。作業の優先順位を変更する機能が必要な場合や、処理エージェントが特定のタイプの待ちジョブを選択する必要がある場合は、MSMQを使用できません。これらの鐘や笛が必要ない場合、MSMQは.NETで使用するケーキです。

+1

いくつかのメッセージだけを処理するMSMQキューを反復することができます: 'MessageQueue.CreateCursor'、そして' Peek'と 'Receive'オーバーロードを使用してカーソルを取得します。 – Richard

+1

処理する特定のタイプのメッセージを選択して選択する場合は、各メッセージタイプごとにキューを別々にする方がよいでしょう。 –

+0

@リチャードは、あなたが本当にやることができない「優先順位を再設定する」。 – StingyJack

関連する問題