Kotlin

RestTemplateのタイムアウト設定

RestTemplate には以下の 2 つのタイムアウトを設定することができます。

ConnectTimeout
ReadTimeout

これらの設定自体は SimpleClientHttpRequestFactory クラスが持っているのですが、RestTemplate のコンストラクタで SimpleClientHttpRequestFactory を渡して設定します。

今回は単純に、接続先の処理が遅くてレスポンス時間に余裕が持ちたい場合について調べてみました。

それぞれのタイムアウトについて

この 2 種類の設定、「接続タイムアウト」と「読み込みタイムアウト」ということで、どのような挙動になるのかわかりにくいです。

setConnectTimeout()
Set the underlying URLConnection’s connect timeout (in milliseconds). A timeout value of 0 specifies an infinite timeout.

setReadTimeout()
Set the underlying URLConnection’s read timeout (in milliseconds). A timeout value of 0 specifies an infinite timeout.

SimpleClientHttpRequestFactory

要は、接続先の処理が遅くてレスポンスが返るまでに時間がかかる場合、どちらのタイムアウト設定を長くすればいいかという話です。

じっくり考えればわかることですが、最初はコネクションだから setConnectTimeout() の方だろうと安易に解釈したのですが、挙動を確認してみたところ setReadTimeout() が正解でしたね。

設定はミリ秒になるので、例えばタイムアウトを 3 秒にしたい場合は、冒頭のサンプルの通り setReadTimeout() に 3000 を設定しておきます。

どうしてもダイヤが必要な場合

時間を短縮したい。お店屋さんの生産枠を増やしたい。など、ゲームを進めるうえで、どうしても少しだけダイヤを課金したくなる時ってありますよね。

そんな時は、楽天市場で「itunesカード」を購入すると楽天ポイントの還元があってお得です。

iOS(iPhone)の人に限られてしまいますが、初回購入時に 500 円オフのキャンペーンをしていたり、楽天ポイントも最大で 16 倍とものすごくお得です。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

App Store & iTunes ギフトカード(3,000円)
価格:3000円(税込、送料無料) (2020/5/24時点)