web-dev-qa-db-ja.com

SQL Server Service Brokerからエラーメッセージを回復しました

私たちは過去1年間SSSB 2008を使用しています、そしてそれは素晴らしかったです。 (とにかくMSMQと比較して。)ただし、ルーティング機能ではなく、同じデータベースキューイングを使用しています。

私たちのアプリのいくつかの変更は私たちがメッセージをルーティングすることを要求します。今まで、私たちは「火と忘れ」をしています - メッセージを送って会話を終了します。データベースの1つが誤って設定されているのと同じくらい失敗したことを心配していません。誰かが証明書をめちゃくちゃにした場合は、SSSBからエラーメッセージを返します。

これらのエラーを得るときは、元のメッセージオブジェクトを取得する方法がありますか?メッセージが送信キュー内にあるときの即時エラーの場合は簡単です。しかし、ネットワークを越えて行った後、メッセージが「なくなった」と表示されます。

この場合、それに対処する一般的な方法は何ですか?メッセージとIDを "QueuedMessages"テーブルに書くことを考えています。次に、送信キューでプロシージャがアクティブになって、エンドダイアグロッグを受信する上でメッセージを削除するか、エラーが受信されたときにフラグ/ロギングを設定します。あるいは、ビジネス要件を緩めることができれば、送信項目を送信プロセスのRAMに保存することができるだけで、エラー/ endDialogのキューをチェックしてください。 (IN-RAMの動機はパフォーマンスになります - 私たちは、SQL Expressを実行している、非常に少ないリソースで約400のメッセージ/ SEC Outboundを実行することを計画しています。)

一般的なコメントは?

1
MichaelGG

メッセージが宛先にそれを作成しない場合は、sys.transmission_queueからメッセージを取得できるはずです。

2
mrdenny