Open nightswimmings opened 1 year ago
See also #31496
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 in spring-framework
.
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
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
@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 custom ClientHttpRequestFactory
.
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.
@mvitz There's no update on this one yet I'm afraid
@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.
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
I think,
WebClient
/WebTestClient(Builder)
should be able to configure defaults through properties, especially timeout and especially forWebTestClient
, 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