optimizely / optimizely/java-sdk

[ENHANCEMENT] Add Support for Custom `HttpRequestExecutor` in `OptimizelyHttpClient`

Aperta
#564 1 commento 16 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Java
Stelle
44
Fork
32
Merge medio
8h 39m
PR unite (30g)
1

Descrizione

Description

Currently, the OptimizelyHttpClient in the Optimizely Java SDK uses a default HttpRequestExecutor provided by Apache HttpComponents library for handling HTTP requests. However, there is no extension point to allow developers to supply a custom HttpRequestExecutor.

Adding the ability to inject a custom HttpRequestExecutor would provide greater flexibility, enabling users to replace or extend the default behavior. For example, the inclusion of tools such as the MicrometerHttpRequestExecutor allows the collection of execution metrics, including latency, errors, and throughput.

While upgrading to Apache HttpComponents 5 would modernize the library and bring advanced features, adding this extension point would still be valuable. It ensures that developers can adapt or enhance the HTTP client behavior for monitoring and observability, regardless of which version of Apache HttpComponents is used.

Benefits
  • Increased Observability: Developers can use custom executors, like the MicrometerHttpRequestExecutor, to capture valuable execution metrics such as request duration, HTTP status distribution, and network errors. These metrics can be sent to monitoring systems like Prometheus or Datadog.
  • Enhanced Extensibility: A configurable HttpRequestExecutor provides an extension point for more advanced use cases, empowering developers to customize the HTTP behavior without requiring changes to the base SDK.
  • Future-Proof Design: Introducing this flexibility ensures that users have control over HTTP execution behavior, making it easier to adopt library upgrades in the future, including potential transitions to Apache HttpComponents 5.
Detail
  1. Add a configurable property to OptimizelyHttpClient to allow injection of a custom HttpRequestExecutor.
  2. Provide a fallback to the existing default HttpRequestExecutor if no custom request executor is supplied.
  3. Update documentation to highlight this new extensibility feature and provide examples of using custom executors such as MicrometerHttpRequestExecutor.
Examples

Not right now

Risks/Downsides

Not right now

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia individuando OptimizelyHttpClient e la configurazione predefinita attuale di HttpRequestExecutor, quindi esamina i test e la documentazione circostanti del client HTTP. Il lavoro è completato quando è possibile fornire un executor personalizzato, il default esistente rimane il fallback e la documentazione include un esempio di utilizzo come MicrometerHttpRequestExecutor.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
backend, observability
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.