Unified configuration of HTTP client #5909
Merged
+586
−417
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
With the advent of HTTP/3 support we need to improve the configuration of the Vert.x HTTP client.
The initial version of HTTP/3 was implemented using a new
Http3ClientOptionswhich was only suitable to configure HTTP/3 only. Configuration of a client capable of using the TCP and QUIC transport was not public and complex from the API perspective sinceHttpClientOptionsis strongly coupled to TCP and holds SSL configuration as well.The choice has been made to come up with a new configuration API that makes the configuration of the various versions of the protocol a nested API.
HttpClientOptionsdefines bits for HTTP/1.1 and HTTP/2, both unqualified (e.g. pipelining/keepAlive for HTTP/1.x) or prefix qualified for HTTP/2 (e.g. http2KeepAliveTimeout). The new configuration API encapsulates those in version specific API.The new API also leverages the
DurationAPI to replace the previous (primitive type, time unit) couples.Changes
HttpClientConfigAPI to simplify the configurationHttp3ClientOptionsthat is not necessary anymore