WCFサービスを作成し、netMsmqBindingバインディングを利用しています。
これは、Dtoをサービスメソッドに渡し、応答を期待しない単純なサービスです。メッセージはMSMQに配置され、ピックアップされるとデータベースに挿入されます。
データが失われていないことを確認するための最良の方法は何ですか。
私は次の2つの方法を試しました。
例外をスローする
これにより、メッセージは手動で閲覧できるようにデッドレターキューに入れられます。私のstrviceが始まるときにこれを処理することができます
バインディングにreceiveRetryCount="3"を設定します
3回試行した後-これは瞬時に発生しますが、これはメッセージをキューに残しているようですが、私のサービスに障害があります。サービスを再起動すると、このプロセスが繰り返されます。
理想的には、次のことを行いたいと思います。
メッセージを処理してみてください
- これが失敗した場合は、そのメッセージを5分間待ってから、再試行してください。
- そのプロセスが3回失敗した場合は、メッセージをデッドレターキューに移動します。
- サービスを再起動すると、デッドレターキューからのすべてのメッセージがキューに戻され、処理できるようになります。
これを達成できますか?もしそうなら、どのように?特定のシーンでWCFとMSMQを最適に利用する方法に関する優れた記事を教えてください。
どんな助けでも大歓迎です。ありがとう!
いくつかの追加情報
WindowsXPおよびWindowsServer2003でMSMQ3.0を使用しています。残念ながら、MSMQ4.0およびVista/2008を対象とした組み込みのポイズンメッセージサポートを使用できません。