Skip to content

Feign 11 Proposed Roadmap

Kevin Davis edited this page Aug 27, 2019 · 5 revisions

Some of these considerations have been attempted in FeignX. We should consider moving these into Feign.

Considerations:

  • Java 11 Module Support
  • Async Execution through CompletableFuture
    • Pluggable Executor Support
  • Reactive Execution through Reactive Streams
    • Does this require explicit non-blocking with Netty?
  • Complete URI Template Support
    • Level 1 - 4 support
    • Better Object Expansion
  • Enhanced Retry through the use of Conditions and Backoff
    • Exception Condition
    • Status Code Condition
    • Custom Condition
    • Backoff Policies
  • Enhanced Logging
    • Log external and internal messages
    • Consider using SLF4J in all cases
    • Built in Performance characteristics
  • Annotation Processor as an alternative to Reflection based Proxies
    • This may imply in re-working the current Contract implementations so code can be shared between reflective and non-reflective code
  • Caching support
    • Both when http headers are set or when user says so
      • when user says to cache, any invocation that uses exact same args will read from cache, no HTTP request, no response parsing
      • when using http headers, feign will need to handle the headers and include them on next request that use the same args. if 304, return the cached result from previous invocation, (Conditional GET support)
    • Configurable and not enable by default
    • Consider 2 implementations, default using java Map and alternative with guava Cache, maybe also make it pluggable with Spring Cache?
  • Metrics
    • collection metrics about rate and time for requests. May be make detail level configurable, so can include metrics about time encondig/decoding and so on.
Clone this wiki locally