@Bean
public WebClient webClient() {
ReactorClientHttpConnector connector =
new ReactorClientHttpConnector(builder -> {
builder.onChannelInit(c -> {
c.config().setConnectTimeoutMillis(2 * 1000);
c.pipeline().addLast(new ReadTimeoutHandler(5, TimeUnit.SECONDS));
return false;
});
});
return WebClient.builder().clientConnector(connector).build();
}
reactor - Spring 5 webflux how to set a timeout on Webclient - Stack Overflow
基本的にここに書いてある内容、なのだが……。
まず、SO_TIMEOUT
は設定してもwarn
でそんなオプションはないと警告が出る。多分使えないと思う。
onChannelInit
だが、booleanを返すInterfaceになっている。とりあえずtrue
を返しておけばいいだろうと雑な対応をするとchannel
が閉じられ、使おうとするとNIO系のなんかExceptionが出て死ぬ。使いたかったらfalse
で返す必要がある。
一応動作確認したので、これで動くと思います。