2016-07-18 4 views
0

ネットワーク経由で2台のサーバー間にSQL Service Brokerをセットアップしても問題なく動作しています。私は現時点でエラー処理を実装しています。私は両方のキューに添付されたプロシージャを格納してメッセージを処理しています。MSSQL Service Brokerの送信側エラーメッセージの認識

不正な形式のXMLを送信しようとするなど、メッセージの送信が失敗した場合、メッセージは送信者キューに残ります。送信ステータスは

です。このブローカでは、エラーメッセージが表示されます。サービス ブローカはメッセージを送信しません。 アプリケーションが会話を終了するまで開催されます。 select * from sys.transmission_queueと(ストアドプロシージャはデバッグのためにオフ)キューを照会する場合

is_conversation_erroris_end_of_dialogフィールドは0であり、message_type_nameではなく、通常のエラータイプの送信時に私が使用したものと同じです。

キューにそのようなメッセージを認識する方法はありますか?私の自動送信キューは、現時点では通常のメッセージとして処理しています。

+0

また、契約のメッセージ検証をオフにして、受信側でメッセージを処理する際に、メッセージをxmlにキャストできないときにエラーメッセージテーブルにチャッキングすることができます。 –

+0

実際に面白いですが、私は 'Validation = None'を持っていますが、まだXMLをチェックしているようです。 – milez

+0

奇妙な。契約は双方向(すなわち、創始者と目標)に見えますか? –

答えて

1

不正なXMLエラーがダイアログにエラーメッセージを返します。これはアプリケーションキューにエンキューされ、キュー内のエラーメッセージを処理する必要があるため、アプリケーションで処理する必要があります。

送信者キューをtransmission_queueと混同していることに注意してください。送信キューはCREATE QUEUEで作成された通常のキューで、送信サービスに関連付けられたキューです。私が話しているエラーメッセージは、あなたの送信者キューに格納されており、RECEIVEで取得できます。 transmission_queueは、配信が保留中のメッセージを含むシステムが所有する内部テーブルです。 transmission_queueからRECEIVEを入力することはできません。

あなたの投稿から判断すると、あなたのアプリケーションでは、送信者キュー内のメッセージの処理が行なわれていないと思います。論理メッセージの流れが常にサービス 'A'からサービス 'B'になっても、にはに 'A'サービスキューのメッセージ処理が必要です。それ以外の場合は、エラーを処理する必要があります。

+0

キューを混乱させる大きなポイント!私は(A - B - Aファッションで)要求への返信を受け取るための送信キューの手続きを持っています。私は仕事に戻るとき、私は明日私の問題を解決できるかどうかをチェックします、答えのおかげで。 – milez

+0

これは、間違ったキューを見ているので、エラー状態で、送信側のキューにありました。ありがとうございました! – milez

関連する問題