2

実行に時間がかかる WCF サービス メソッドがあります。説明のために、0.5 秒かかる場合と 5 秒かかる場合があるとします。各リクエストの処理時間は 0.5 ~ 5 秒です。サービスが 2 秒以内にリクエストを処理できない場合、クライアントはそれを失敗と見なし、リクエストを別のサーバーに送信することを検討するというビジネス条件があります。

サービスが 10 個の同時要求を取得したとします。サービスがそれらを 2 秒未満で実行できたため、そのうち 4 個が成功し、残りの 6 個が失敗したとします。私が直面している問題は、残りの 6 つがクライアントが消費しないことを行っていることです。この 6 リクエストはサーバー リソースを消費するため、新しい受信リクエストは遅延します。WCF は、一度処理されると誰も使用しない要求をキューに入れるため、時間の経過とともに、失敗したと見なされる要求がますます多くなります。

リクエストを受信して​​から 3 秒以内に Web メソッド/リクエストの実行に失敗した場合、現在のリクエストを終了するように WCF スロットリング/タイムアウトに指示するにはどうすればよいですか。これは、クライアント側の設定であってはなりません。「たとえば 4 秒以内にリクエストを処理できない場合は、そのことを忘れて、そのリクエストの処理を停止してください。誰もあなたの最終結果を使用しないからです」のようにサービスに指示したいと思います。

ServiceThrottlingBehavior と (CloseTimeout,OpenTimeout,SendTimeout,ReceiveTimeout) をいじってみましたが、一定時間後に処理を停止するようにサービスに指示するのに役立つものは何もありません。

4

0 に答える 0