Package brave.http
Class HttpServerHandler<Req,Resp>
- java.lang.Object
-
- brave.http.HttpServerHandler<Req,Resp>
-
- Type Parameters:
Req- the native http request type of the server.Resp- the native http response type of the server.
public final class HttpServerHandler<Req,Resp> extends Object
This standardizes a way to instrument http servers, particularly in a way that encourages use of portable customizations viaHttpServerParser.This is an example of synchronous instrumentation:
Span span = handler.handleReceive(extractor, request); Throwable error = null; try (Tracer.SpanInScope ws = tracer.withSpanInScope(span)) { // any downstream code can see Tracer.currentSpan() or use Tracer.currentSpanCustomizer() response = invoke(request); } catch (RuntimeException | Error e) { error = e; throw e; } finally { handler.handleSend(response, error, span); }
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <Req,Resp>
HttpServerHandler<Req,Resp>create(HttpTracing httpTracing, HttpServerAdapter<Req,Resp> adapter)<C> brave.SpanhandleReceive(brave.propagation.TraceContext.Extractor<C> extractor, C carrier, Req request)LikehandleReceive(TraceContext.Extractor, Object), except for when the carrier of trace data is not the same as the request.brave.SpanhandleReceive(brave.propagation.TraceContext.Extractor<Req> extractor, Req request)Conditionally joins a span, or starts a new trace, depending on if a trace context was extracted from the request.voidhandleSend(Resp response, Throwable error, brave.Span span)Finishes the server span after assigning it tags according to the response or error.
-
-
-
Method Detail
-
create
public static <Req,Resp> HttpServerHandler<Req,Resp> create(HttpTracing httpTracing, HttpServerAdapter<Req,Resp> adapter)
-
handleReceive
public brave.Span handleReceive(brave.propagation.TraceContext.Extractor<Req> extractor, Req request)
Conditionally joins a span, or starts a new trace, depending on if a trace context was extracted from the request. Tags are added before the span is started.This is typically called before the request is processed by the actual library.
-
handleReceive
public <C> brave.Span handleReceive(brave.propagation.TraceContext.Extractor<C> extractor, C carrier, Req request)LikehandleReceive(TraceContext.Extractor, Object), except for when the carrier of trace data is not the same as the request.Request data is parsed before the span is started.
-
-