2017-10-30 5 views
-1

나는 그렇게보다 Runnable를 실행하는 ExecutorService를 가지고 :자바 8 아파치 HttpClient를 연결 속도가 느린

public class Rexecutor implements Runnable { 

    @Override 
    public void run() { 
     while(thisUseAmount.intValue() <= amountToGoal) { 
      try { 
       requests(); 
      } catch (Exception ex) { 
       //blah blah 
      } 
     } 
    } 

    private void requests() throws Exception { 
     <<HttpRequests (Gets, Posts, Puts) through HttpClient>> 
    } 

} 

그 요청을 프록시를 통해 실행된다 (1-1000 임의 프록시 주소를 선택이 끝난)을하고 경우에 따라서는 "게으른"프록시 ​​안타 그것은 천천히 느리다. 이를 해결하기 위해, 몇 분 (평균 스레드 루프는 30 초) 이상 실행되는 스레드에 대해 프록시 IP를 재설정합니다. 문제는이 스레드의 프록시 주소를 x 번 이상 변경해도 여전히 느리게 실행되고 있다는 것입니다. 왜 그런지 말해 줄 수 있니? 연결 속도 등을 변경할 수없는 HttpClient 옵션이 있습니까?

추신. 프록시에 대한 액세스 권한을 부여 할 수 없기 때문에 작업 예제를 제공 할 수 없습니다.

답변

-1

대신 JDK와 함께 제공되는 Apache HttpClient를 사용하는 것이 좋습니다.

+0

오 죄송합니다, 제가 아파치 HttpClient를를 사용 물론 해요

private HttpClientBuilder client = HttpClientBuilder.create().setRetryHandler(new DefaultHttpRequestRetryHandler(Integer.MAX_VALUE, true)); 

그냥 재시 처리기를 추가 :) : 검색의 시간 후 https://hc.apache.org/httpcomponents-client-ga/examples.html CodeWriter

0

나는 해결책을 발견했다. 나는 HttpClient가 하나 있다고 생각했기 때문에 언급하지 않았다.