packagecom.chinawayltd.altair.user.console.config;importcom.github.kristofa.brave.Brave;importcom.github.kristofa.brave.EmptySpanCollectorMetricsHandler;importcom.github.kristofa.brave.Sampler;importcom.github.kristofa.brave.SpanCollector;importcom.github.kristofa.brave.http.DefaultSpanNameProvider;importcom.github.kristofa.brave.http.HttpSpanCollector;importcom.github.kristofa.brave.mysql.MySQLStatementInterceptorManagementBean;importcom.github.kristofa.brave.okhttp.BraveOkHttpRequestResponseInterceptor;importcom.github.kristofa.brave.servlet.BraveServletFilter;importokhttp3.OkHttpClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/*** Created by liaokailin on 16/7/27.*/@Configurationpublic classZipkinConfig {
@Value("${com.zipkin.serviceName}")privateString serviceName;
@Value("${com.zipkin.url}")privateString url;
@Value("${com.zipkin.connectTimeout}")private intconnectTimeout;
@Value("${com.zipkin.readTimeout}")private intreadTimeout;
@Value("${com.zipkin.flushInterval}")private intflushInterval;
@Value("${com.zipkin.compressionEnabled}")private booleancompressionEnabled;
@BeanpublicSpanCollector spanCollector() {
HttpSpanCollector.Config config=HttpSpanCollector.Config.builder().connectTimeout(connectTimeout).readTimeout(readTimeout)
.compressionEnabled(compressionEnabled).flushInterval(flushInterval).build();return HttpSpanCollector.create(url, config, newEmptySpanCollectorMetricsHandler());
}
@BeanpublicBrave brave(SpanCollector spanCollector){
Brave.Builder builder= new Brave.Builder(serviceName); //指定state
builder.spanCollector(spanCollector);
builder.traceSampler(Sampler.ALWAYS_SAMPLE);
Brave brave=builder.build();returnbrave;
}
@BeanpublicBraveServletFilter braveServletFilter(Brave brave){
BraveServletFilter filter= new BraveServletFilter(brave.serverRequestInterceptor(),brave.serverResponseInterceptor(),newDefaultSpanNameProvider());returnfilter;
}
@BeanpublicOkHttpClient okHttpClient(Brave brave){
OkHttpClient client= newOkHttpClient.Builder()
.addInterceptor(new BraveOkHttpRequestResponseInterceptor(brave.clientRequestInterceptor(), brave.clientResponseInterceptor(), newDefaultSpanNameProvider()))
.build();returnclient;
}
@BeanpublicMySQLStatementInterceptorManagementBean mySQLStatementInterceptorManagementBean(Brave brave) {return newMySQLStatementInterceptorManagementBean(brave.clientTracer());
}
}