2017-06-22 1 views
0

私は自分のプログラムから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アノテーションの魔法があるかもしれません。

答えて

1

RESTコールの作成方法は重要ではありません。 REST呼び出しごとに100万回のメソッド呼び出しを行う必要がある場合でも、擬似コードは正しいはずです。

for ip in ip_list 
    do_stuff_to_make_the_rest_call 
    perhaps_note_the_ip_that_was_used 
    indicate_success 
    break_out_of_for_loop 
    catch some_exception 
    perhaps_note_the_ip_that_failed 
end for 

if !success 
    do all_ip_failed_stuff. 


procedure do_stuff_to_make_the_rest_call 
    make a million method calls to get one REST call attempt. 
関連する問題