#22 [SpringBoot/KotlinでBFF]RestTemplateにTimeoutを設定する

RestTemplateにReadTimeoutとConnectTimeoutを設定する。
application.ymlにタイムアウト時間を設定して、Repository層でRestTemplateにRestTemplateBuilderを使用して設定。

application.yml

external:
  task:
    url: http://localhost:50000
    read-timeout-millis: 3000
    connect-timeout-millis: 3000

repository層

@Repository
class TaskRepository(
        restTemplateBuilder: RestTemplateBuilder,
        @Value("\${external.task.url}") private val taskApiUrl: String = "",
        @Value("\${external.task.connect-timeout-millis}") private val connectTimeoutMillis: Long,
        @Value("\${external.task.read-timeout-millis}") private val readTimeoutMillis: Long
) {
    private var restTemplate: RestTemplate? = null

    init {
        restTemplate = restTemplateBuilder
                .setConnectTimeout(Duration.ofMillis(connectTimeoutMillis))
                .setReadTimeout(Duration.ofMillis(readTimeoutMillis))
                .build()
    }

確認
意図的にReadTimeout/意図的にConnectTimeoutを発生させてタイムアウトが設定した3000 msecで発生する事を確認

参考
SpringBoot公式 boot-features-resttemplate-customization

コード
https://github.com/little-engineer/bff-sample/pull/26/files

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
little
15年以上プログラマーをしているエンジニアです。Kotlin, Java, Python, C++を使用したServerSideの開発に携わってきました。とりあえずやってみるスタイルで記事を更新していきます。