私は自分のプログラムからREST要求を出しているサーバーがいくつかあります。彼らはすべて特定の要求に対して同じ応答をします。ネットワーク障害からエレガントに復旧し、別のエンドポイントへの要求を繰り返すにはどうすればいいですか?
私は引数としてip
を受け入れ、そのサーバーに自分のリクエストを行います。 List<ip>
を受け入れる場合は、リストにある次のサーバにうまく切り替えるにはどうすればいいですか?すべてのネットワーク呼び出しでリストをループするのは愚かなようです。
残念ながら、残りのリクエストでHttpClientを受け入れる1つの関数にcatch-repeat_to_next_serverを抽出してREST呼び出しを行うことはできません。サーバーと通信するために3番目のSDKを使用しており、メソッド呼び出しの
私は、この(擬似コード)を行うことはできません:
def doRequest(HttpClient client)
for ip in list_of_ips:
try:
client.host = ip
return client.execute()
catch exp:
// move failed ip to end of list or something
throw "None of them worked"
HttpClient c
c.method = "GET /api/employees"
doRequest(c)
c.method = "GET /api/department/:id"
doRequest(c)
はきれいな方法でこれを解決するための任意の標準的な方法はありますか?
私はJavaとSpringを使用していますので、静的な型指定に拘束されていますが、私が気付いていないようなSpringアノテーションの魔法があるかもしれません。