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
コメントを残す