OpenFeign / feign

Feign makes writing java http clients easier
Apache License 2.0
9.43k stars 1.92k forks source link

Add support for Micrometer's new Observation API #1734

Closed jonatan-ivanov closed 1 year ago

jonatan-ivanov commented 2 years ago

Micrometer introduces a new set of APIs in its next minor version (1.10.0). From the high level perspective this API is somewhat similar to a Timer in the sense that it measures elapsed time and you can start/stop your measurements.

The advantage of making measurements using the Observation API over the Timer is that you can attach arbitrary handlers (listeners) who can react to events during your observations, e.g.: an observation was started/stopped and error happened, etc. This makes possible not only recording metrics (delegating to a Timer) but also creating Spans (distributed tracing), attaching logs (audit, trace, perf, etc.) or doing any arbitrary thing that you want.

Basically you instrument your code once and you can get multiple things out of this instrumentation, you don't need multiple instrumentations.

We have a migration guide that can give more information and also examples for migrating from a Timer-based instrumentation to the Observation API.

What do you think?

OlgaMaciaszek commented 2 years ago

@velo @kdavisk6 We are making some major changes when it comes to tracing and observability for Spring 6. In order to maintain functionality, we would like to propose the change described above. We could provide the contribution. Please let us know what you think.

kdavisk6 commented 2 years ago

Apologies, I think this is a very good idea. Feel free to submit any proposals.

OlgaMaciaszek commented 2 years ago

Thanks :) . We'll do.

marcingrzejszczak commented 2 years ago

I've submitted a draft PR that we can discuss - https://github.com/OpenFeign/feign/pull/1760

Nicklas2751 commented 1 year ago

The PR is merged so this can be closed, right?

marcingrzejszczak commented 1 year ago

Yes!

jonatan-ivanov commented 1 year ago

Fixed by https://github.com/OpenFeign/feign/pull/1760