@Override public void doStart() { // select a server selectServer(); // init header initHttpHeaders(); }
<T> T doPost(String uri, Map<String, String> headers, Map<String, Object> params, int readTimeout, Class<T> targetType){ for (;;){ try { return doPost(currentServer, uri, headers, params, readTimeout, targetType); } catch (AuthFailException e){ throw new IllegalArgumentException("appKey isn't right, please check"); } catch (Server503Exception | HttpRequest.HttpRequestException e){ String oldServer = currentServer; log.warn("current server({}) is maybe unavailable, trying to selects a new server", oldServer); selectServer(); log.warn("old server({}) is unavailable, select a new server({})", oldServer, currentServer); } } }
private Map<String, Object> doPostAsMap(String server, String uri, Map<String, String> headers, Map<String, Object> params, int readTimeout){ for (;;){ try { Map<String, Object> respMap = doRequest(server, uri, HttpMethod.POST, headers, params, readTimeout); if (respMap == null || respMap.isEmpty()){ return null; } return respMap; } catch (AuthFailException e){ throw new IllegalArgumentException("appKey isn't right, please check"); } catch (Server503Exception | HttpRequest.HttpRequestException e){ // there are no servers available Sleeps.sleep(3); String oldServer = currentServer; log.warn("current server({}) is maybe unavailable, trying to selects a new server", currentServer); selectServer(); log.warn("old server({}) is unavailable, select a new server({})", oldServer, currentServer); server = currentServer; } } }
<T> T doGet(String uri, Map<String, String> headers, Map<String, Object> params, Class<T> targetType){ for (;;){ try { return doGet(currentServer, uri, headers, params, targetType); } catch (AuthFailException e){ throw new IllegalArgumentException("appKey isn't right, please check"); } catch (Server503Exception | HttpRequest.HttpRequestException e){ Sleeps.sleep(2); String oldServer = currentServer; log.warn("current server({}) is unavailable, try to select a new server", oldServer); if(selectServer()){ log.info("old server({}) is unavailable, routed a select server({})", oldServer, currentServer); } else { log.warn("failed to select a new server, please check the server cluster"); Sleeps.sleep(5); } } } }