, 당신은 어떤 inturn이 개 매개 변수를 허용 빌더에 RequestConfig의 인스턴스를 전달할 수 있습니다.
SocketTimeout
- 소켓 대기 시간 (SO_TIMEOUT)을 밀리 초 단위로 정의합니다. 밀리 초 단위로 데이터를 기다리는 시간 초과 또는 두 개의 연속적인 데이터 패킷 간의 최대 비활성 시간을 나타냅니다.
ConnectTimeout
- 연결이 설정 될 때까지의 시간 제한을 밀리 초 단위로 결정합니다. 타임 아웃 값 0은 무한 타임 아웃으로 해석됩니다.
ConnectionRequestTimeout
- 연결 관리자로부터 연결을 요청할 때 사용되는 시간 제한을 밀리 초 단위로 반환합니다. 타임 아웃 값 0은 무한 타임 아웃으로 해석됩니다.
당신이 찾고있는 것은 입니다. SocketTimeout입니다.
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECTION_TIMEOUT)
.setConnectionRequestTimeout(CONNECTION_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build();
httpClient = HttpClientBuilder.create().disableAutomaticRetries().setDefaultRequestConfig(requestConfig)
.setConnectionManager(poolingHttpClientConnectionManager).disableRedirectHandling().build();
ConnectionKeepAliveStrategy을 살펴볼 수 있습니다. "2.6 연결 유지 전략"절 참조
안녕하세요, 귀하의 회신에 감사드립니다. 미안해, 내가 생각하기에 충분하지 않다. 소켓 시간 제한을 사용하여 솔루션을 시도했지만 연결을 중지하지는 않습니다. 기본적으로 나는 그 연결을 통해 일정한 데이터 스트림을 수신 할 것이지만 사용자가 지정한 시간 (예 : 10 초) 후에 데이터를자를 수 있기를 원합니다. – GreenApples53
@ GreenApples53 그래, 나는 그 질문에 대해 오해했다. ConnectionKeepAliveStratergy가 도움이되는지 알 수 있습니까? 서버로부터 첫 번째 응답을 받으면 keep-alive timeout을 사용하여이를 처리 할 수 있습니다. 그리고 응답이 수신되기 전에 이것을 달성하기 위해 소켓 타임 아웃을 사용할 수 있습니다.그래서 둘 다 섞을 필요가 있다고 생각합니다. –
저는 현재 지정된 시간 후에 연결을 중단시키는 타이머 스레드를 생성하는 솔루션을 구현했습니다. 나는 이것이 최선의 관행인지 아닌지는 모르겠지만 그것이 나를 위해 일하는 것 같다. 이것에 문제가있을 것이라고 생각하십니까? 종류는 안부 – GreenApples53