下面列出了org.springframework.boot.web.client.RestTemplateCustomizer#brave.httpclient.TracingHttpClientBuilder 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@GET
@Path("/search")
@Produces(MediaType.APPLICATION_JSON)
public JsonObject search(@QueryParam("q") final String query, @Context final TracerContext tracing) throws Exception {
final CloseableHttpClient httpclient = TracingHttpClientBuilder
.create(tracing.unwrap(HttpTracing.class))
.build();
try {
final URI uri = new URIBuilder("https://www.googleapis.com/books/v1/volumes")
.setParameter("q", query)
.build();
final HttpGet request = new HttpGet(uri);
request.setHeader("Accept", "application/json");
final HttpResponse response = httpclient.execute(request);
final String data = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
try (final StringReader reader = new StringReader(data)) {
return Json.createReader(reader).readObject();
}
} finally {
httpclient.close();
}
}
@Override
public void run(HelloServiceConfiguration configuration, Environment environment) {
/* START TRACING INSTRUMENTATION */
final var sender = URLConnectionSender.newBuilder()
.endpoint(configuration.getZipkinEndpoint()).build();
final var reporter = AsyncReporter.builder(sender).build();
final var tracing = Tracing.newBuilder().localServiceName("hello-service")
.sampler(Sampler.ALWAYS_SAMPLE).spanReporter(reporter).build();
final var httpTracing = HttpTracing.newBuilder(tracing).build();
final var jerseyTracingFilter = TracingApplicationEventListener
.create(httpTracing);
environment.jersey().register(jerseyTracingFilter);
/* END TRACING INSTRUMENTATION */
// Without instrumentation
// final HttpClient httpClient =
// new
// HttpClientBuilder(environment).using(configuration.getHttpClientConfiguration())
// .build(getName());
final var httpClient = TracingHttpClientBuilder.create(httpTracing).build();
final var url = configuration.getTranslationServiceUrl() + "/translate";
final var translationServiceClient = new HelloTranslationServiceClient(httpClient,
url);
final var helloResource = new HelloResource(translationServiceClient);
environment.jersey().register(helloResource);
final var helloServiceHealthCheck = new HelloServiceHealthCheck();
environment.healthChecks().register("hello-service", helloServiceHealthCheck);
}
@Bean RestTemplateCustomizer useTracedHttpClient(HttpTracing httpTracing) {
final CloseableHttpClient httpClient = TracingHttpClientBuilder.create(httpTracing).build();
return new RestTemplateCustomizer() {
@Override public void customize(RestTemplate restTemplate) {
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
}
};
}
public static void main(final String[] args) throws Exception {
try (final CatalogTracing tracing = new CatalogTracing("catalog-client")) {
final CloseableHttpClient httpclient = TracingHttpClientBuilder
.create(tracing.getHttpTracing())
.build();
final HttpGet request = new HttpGet("http://localhost:9000/catalog");
request.setHeader("Accept", "application/json");
final HttpResponse response = httpclient.execute(request);
System.out.println(EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8));
httpclient.close();
}
}
@Bean RestTemplateCustomizer useTracedHttpClient(HttpTracing httpTracing) {
final CloseableHttpClient httpClient = TracingHttpClientBuilder.create(httpTracing).build();
return new RestTemplateCustomizer() {
@Override public void customize(RestTemplate restTemplate) {
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
}
};
}
@Bean
RestTemplateCustomizer useTracedHttpClient(HttpTracing httpTracing) {
final CloseableHttpClient httpClient = TracingHttpClientBuilder.create(httpTracing).build();
return restTemplate -> restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
}
@Bean
RestTemplateCustomizer useTracedHttpClient(HttpTracing httpTracing) {
final CloseableHttpClient httpClient = TracingHttpClientBuilder.create(httpTracing).build();
return restTemplate -> restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
}
@Override
public HttpClientBuilder createBuilder() {
return TracingHttpClientBuilder.create(httpTracing);
}
/** adds tracing to any underlying http client calls */
@Bean
HttpClient httpClient(HttpTracing httpTracing) {
return TracingHttpClientBuilder.create(httpTracing).build();
}
@Bean
@ConditionalOnMissingBean
HttpClientBuilder traceHttpClientBuilder(HttpTracing httpTracing) {
return TracingHttpClientBuilder.create(httpTracing);
}
protected CloseableHttpClient newClient(HttpTracing httpTracing) {
return TracingHttpClientBuilder.create(httpTracing).disableAutomaticRetries()
.build();
}
/** adds tracing to any underlying http client calls */
@Bean HttpClient httpClient(HttpTracing httpTracing) {
return TracingHttpClientBuilder.create(httpTracing).build();
}