ユーザーが自分のシステムで検索を行うたびに、外部システムにリクエストを送信する必要があるシステムがあります。
外部システムがダウンしているか、応答に異常に長い時間がかかっている場合は、システムをしばらく「バックオフ」させたいと思います。外部システムにさらにリクエストを送信しようとする代わりに、システムのユーザーに、現時点ではリクエストを処理しないことをすぐに知らせたいだけです。
これにより、ユーザーのエクスペリエンスが向上し (タイムアウトを待つ必要がありません)、システムのリソース使用量が少なくなり (外部システムからの応答やタイムアウトを待機するためにスレッドがビジー状態になることはありません)、外部システム。(おそらくすでに負荷に苦しんでいる状況で)
しばらくして、または外部システムが再び応答していることをシステムが検出したら、通常の動作を再開したいと思います。
この種のことを行うためのパターンや標準的な方法はありますか? 具体的には、タイムアウト/長いリクエストを追跡するためのメカニズムと、再試行を開始するタイミングのためのある種の制御メカニズムです。