@Bean @ConditionalOnMissingBean // NOTE: stable bean name as might be used outside sleuth HttpTracing httpTracing(Tracing tracing, SkipPatternProvider provider, HttpClientParser clientParser, HttpServerParser serverParser, @ClientSampler HttpSampler clientSampler, @Nullable @ServerSampler HttpSampler serverSampler) { HttpSampler combinedSampler = combineUserProvidedSamplerWithSkipPatternSampler( serverSampler, provider); return HttpTracing.newBuilder(tracing).clientParser(clientParser) .serverParser(serverParser).clientSampler(clientSampler) .serverSampler(combinedSampler).build(); }
@Test public void customSampler() throws Exception { close(); httpTracing = httpTracing.toBuilder().clientSampler(HttpRuleSampler.newBuilder() .addRule(null, "/foo", 0.0f) .build()).build(); client = newClient(server.getPort()); server.enqueue(new MockResponse()); get(client, "/foo"); RecordedRequest request = server.takeRequest(); assertThat(request.getHeaders().toMultimap()) .containsEntry("x-b3-sampled", asList("0")); }
@Bean @ConditionalOnMissingBean // NOTE: stable bean name as might be used outside sleuth HttpTracing httpTracing(Tracing tracing, SkipPatternProvider provider) { HttpSampler serverSampler = combineUserProvidedSamplerWithSkipPatternSampler( provider); return HttpTracing.newBuilder(tracing).clientParser(this.clientParser) .serverParser(this.serverParser).clientSampler(this.clientSampler) .serverSampler(serverSampler).build(); }
HttpTracing.newBuilder(tracing) .clientParser(clientParser) .clientSampler(clientSampler) .serverParser(serverParser) .serverSampler(serverSampler)
@Bean HttpTracing httpTracing(Tracing tracing) { return HttpTracing.newBuilder(tracing) // server starts traces for read requests under the path /api .serverSampler( new HttpSampler() { @Override public <Req> Boolean trySample(HttpAdapter<Req, ?> adapter, Req request) { return "GET".equals(adapter.method(request)) && adapter.path(request).startsWith("/api"); } }) // client doesn't start new traces .clientSampler(HttpSampler.NEVER_SAMPLE) .build(); }
@Override public HttpTracing getObject() { HttpTracing.Builder builder = HttpTracing.newBuilder(tracing); if (clientParser != null) builder.clientParser(clientParser); if (serverParser != null) builder.serverParser(serverParser); if (clientSampler != null) builder.clientSampler(clientSampler); if (serverSampler != null) builder.serverSampler(serverSampler); return builder.build(); }
@Test public void customSampler() throws Exception { close(); httpTracing = httpTracing.toBuilder().clientSampler(HttpRuleSampler.newBuilder() .addRule(null, "/foo", 0.0f) .build()).build(); client = newClient(server.getPort()); server.enqueue(new MockResponse()); get(client, "/foo"); RecordedRequest request = server.takeRequest(); assertThat(request.getHeaders().toMultimap()) .containsEntry("x-b3-sampled", asList("0")); }
@Override public HttpTracing getObject() { HttpTracing.Builder builder = HttpTracing.newBuilder(tracing); if (clientParser != null) builder.clientParser(clientParser); if (serverParser != null) builder.serverParser(serverParser); if (clientSampler != null) builder.clientSampler(clientSampler); if (serverSampler != null) builder.serverSampler(serverSampler); return builder.build(); }