13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaのHttpClientにおける3つのTimeoutの違いに関して

Last updated at Posted at 2020-05-26

ApacheのHttpClientを使う際に、以下の3つのタイムアウト値(ミリ秒)を設定できるものの、違いをよくわかっていなかったので自分なりにまとめてみた。

import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;

RequestConfig config = RequestConfig.custom()
    .setConnectTimeout(30000)
    .setConnectionRequestTimeout(30000)
    .setSocketTimeout(30000)
    .build();
      
HttpClient httpClient = HttpClients.custom()
    .setDefaultRequestConfig(config)
    .build();

#ConnetionTimeout
サーバーへの接続要求を送信して、接続が確立されたとレスポンスを受け取るまでのタイムアウト値。
要するに3ウェイハンドシェイクでコネクションが確立するまでに許容する時間を設定する。

#ConnectionRequestTimeout
上記の接続が完了した後、サーバーへリクエストを送ってレスポンスが返ってくるまでのタイムアウト値。

#SocketTimeut
ソケット通信の監視に使われるタイムアウト値。
ソケット通信では継続的にパケットを受信するが、受信間隔がこの値以上が開いた場合はタイムアウト(=SocketTimeoutException)となる。

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?