websphere MQ と WCF を使用する場合、メッセージの耐久性をどのように確保できるか疑問に思っています。WCF プロセスがキューからメッセージを取得できるようにしたいのですが、アプリケーションで問題が発生した場合 (停電など)、メッセージを失うことはありません。また、分散トランザクションを排除したいので、可能な限りトランザクションを使用する必要はありません。
ありがとう、
S
websphere MQ と WCF を使用する場合、メッセージの耐久性をどのように確保できるか疑問に思っています。WCF プロセスがキューからメッセージを取得できるようにしたいのですが、アプリケーションで問題が発生した場合 (停電など)、メッセージを失うことはありません。また、分散トランザクションを排除したいので、可能な限りトランザクションを使用する必要はありません。
ありがとう、
S
トランザクションと分散トランザクションがあります。「正しい」答えは、ここで WMQ 1 フェーズ コミットを使用することです。これには XA トランザクションのような複雑さはありませんが、メッセージを失うことなくメッセージをロールバックできます。実際、クライアントを使用する場合、メッセージの損失を防ぐためだけに、少なくとも 1 フェーズ コミットを使用する必要があります。
それ以外には、「browse-with-lock、delete-message-under-cursor」メソッドが常にあります。ブラウジング、ロック、および削除を行うために必要なものはすべて .NET で公開されていると確信していますが、おそらく Shashi がコメントして確認するでしょう。
WebSphere MQ WCF カスタム チャネルには、サービス要求または応答が処理され、失われないことを保証する機能「Assured Delivery」があります。これは 1 フェーズ コミット (SYNC_POINT としても知られる) WMQ です。
「Assuered Delivery」はサービス契約の属性です。機能の詳細については、こちらをご覧ください。