Duplicate of#43079
Description
I think, WebClient
/WebTestClient(Builder)
should be able to configure defaults through properties, especially timeout and especially for WebTestClient
, since its a setup most people would tune in order to being able to debug for long time and not get a connection exception.
Kind of @AutoConfigureWebTestClient(timeout = "10000")
, but through properties on a global scope.
My apologies if such a setup exists, I could not find it in issues nor spring-boot-properties docs
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
[-]Provide a property that configures webclient/webtestclients timeout globally[/-][+]Provide a property that configures webclient/webtestclients default timeout globally[/+]philwebb commentedon Mar 22, 2023
See also #31496
philwebb commentedon Mar 22, 2023
We're not totally sure that a property is the best solution, but it would be really nice if we could offer a better way to programmatically change the timeout for an individual
WebClient.builder()
. We'll need to do some more design work for this one and possibly request changes inspring-framework
.nightswimmings commentedon Mar 23, 2023
To be honest Phil, I think global would be convenient for WebClient , at least during test, since when debugging (at least webclient's non-reactive) communications, it's very annoying to get java.lang.IllegalStateException: Timeout on blocking read for X NANOSECONDS, every then and now. I'm not exactly sure of the internal mechanics of flux timings (maybe it's my fault on conceptual design), but I assume it's a matter of the lazy/future-evaluations chain because I never suffer them with servlet arch. But just my 2c as a heavy user
nightswimmings commentedon Apr 8, 2023
If this goes on, there is another property that would benefit from this, logging: https://stackoverflow.com/questions/46154994/how-to-log-spring-5-webclient-call
mvitz commentedon Jun 19, 2024
@philwebb any news about this one?
I was, internally, asked how to configure timeouts for the new
RestClient
.My current solution is a
RestClientCustomizer
that sets a customClientHttpRequestFactory
.To rely on the default decision tree of Spring Boot which client library to use, I “stole” the
ClientHttpRequestFactories.get(...)
approach of the autoconfiguration.Especially, reusing this logic was only possible because I looked into the source code of the autoconfiguration.
If not adding properties for configuring these timeouts, it would at least be a good idea to enhance the Spring Documentation about RestClient and include a hint to
ClientHttpRequestFactories
there.philwebb commentedon Jun 20, 2024
@mvitz There's no update on this one yet I'm afraid
mvitz commentedon Jun 21, 2024
@philwebb Thanks for your quick reply.
Anything I can do to help?
I understand that this case is special because configuring a builder via properties is not that common but on the other hand being able to easily configure things like timeouts would be useful, too.
I was thinking if something like
spring.client.rest.default.connection.read-timeout
would be an option.In theory the matching
@ConfigurationProperties
-Class could be even reusable for configuring application specific instances.Let me know if theres anything I can do to help/support.
a1shadows commentedon Aug 9, 2024
Is there anything I can do to help? This is a feature that would be super useful for us.
SO question regarding the same: https://stackoverflow.com/questions/78675295/are-there-any-spring-properties-to-set-defaults-for-spring-webclient
mvitz commentedon May 26, 2025
@philwebb I'm not the author of this ticket, but I think the last changes (documented at https://docs.spring.io/spring-boot/reference/io/rest-client.html#io.rest-client.webclient.configuration) seems to fix at least the majority described here.
philwebb commentedon May 27, 2025
Thanks @mvitz, I think you're right and this has now been fixed.