2012-05-03 18 views
1

MSMQとWCFを使用しています。これで、MSMQがオフラインになるか、WCFと宛先の間に通信エラーが発生する可能性があります。 serviceHostのFaultedイベントを購読でき、MSMQがダウン/オフラインになったときに、そのイベントを発生させることができます。 しかし、発生したフォールトの種類をどのように知ることが可能ですか?私はそれが何らかの通信エラーであることを確かめる必要があります。もしそうなら、一定期間後に再接続し、「魔法の数」に達するまで試し続けたいと思います。WCFの障害 - どのような障害ですか?

サービスから例外がスローされることはありません。 MSMQがオフラインになると、WCFサービスはフォールトを起こしますが、フォールトの種類を知る必要があります。

おかげ

+1

[WCFで - 「フォールト」イベント - 例外の詳細を取得するにはどうすればよいですか?](http://stackoverflow.com/questions/381345/in-wcf-in-the-faulted-event -how-do-i-get-the-exception-details) –

+0

クリスチャンではありませんが、ありがとうございます。これはMSMQ用ですが、以前はMSDNのIErrorHandlerのドキュメントを見ましたが、それはクライアント側ではなくサーバー側です。 –

答えて

1

それはキリスト教のKが示唆するように、あなたが探しているのではなく、なぜWCFサービス/クライアントが実装するnetMsmqBindingがあるその後、理由は他の通信の例外を受信しない、例外の詳細はない場合"火災&忘れる"パターン。

WCFサービスは、MSMQ配管によってクライアントから完全に切断されます.WCFサービスは、MSMQターゲットキューのメッセージのみをリッスンします。 WCFクライアントがMSMQ発信キューにメッセージを正常に配置すると、netMsmqBindingを使用したサービス操作は一方向(返品無効)に設定する必要があります。 MSMQは、を保証し、WCFサービスへのメッセージの配信をと仮定しています。 MSMQ 4.0は、「再接続」と「魔法の数の再試行」に関する懸念を処理します。

+0

ありがとうございます。私はMSMQIntegratedBindingを使用しています。私は火を理解して忘れる。しかし、私は、宛先のMSMQがオフラインである(serviceHostクラスのOnFaultedイベントに登録されている)ときに、サービスに障害が発生する可能性があることを知っています。だから私はその欠陥を知っているが、私は例外の理由やその理由を知っている必要があります、そのフォールトなので、私はそれを再接続しようと自分自身の内部再試行を行うことができます手動で再起動しない限り、MSMQキューからのメッセージ –

+0

クラスタ化されたMSMQは厄介なことがあります。私のクライアントはそれを使用しますが、私はそれを設定することに関与していませんでした。私たちの経験から、メッセージがMSMQによって受け入れられ、元のクライアントマシンの発信キューに置かれると、決して "失われません"。いくつかのサーバが定期的に停止し、デフォルトの有効期間がなくなり、メッセージがクライアントマシンのシステムデッドレターキューに移動したときに、私たちは開発中に問題を抱えていました。私は再試行/再接続の必要性を望んでいる理由を理解していません。 –

+0

クラスタ化された環境では、ノードの1つを停止すると、クラスタ化されたMSMQが他のノードに伝播し、WCFクライアントの接続が切断されます(障害が発生します)。したがって、接続されたクライアントは接続を失い、メッセージを受け取ることはありませんが、代わりにWCFアプリケーションを再起動するまで、メッセージがキューに入れられます。なぜアプリがフォールトを起こしているのかを知りたいのですが、それはどのような種類のフォールトであるのかを知りたいのですが。 –