修改brave下的httpclient、okhttpclient、resttempalte构建方式

parent 344cb26a
......@@ -5,7 +5,7 @@
<parent>
<artifactId>commons-parent</artifactId>
<groupId>cn.quantgroup</groupId>
<version>0.2.3</version>
<version>0.2.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -11,9 +11,17 @@ import brave.spring.webmvc.DelegatingTracingFilter;
import brave.spring.webmvc.SpanCustomizingAsyncHandlerInterceptor;
import cn.quantgroup.tech.brave.properties.BraveProperties;
import cn.quantgroup.tech.brave.properties.ServiceProperties;
import cn.quantgroup.tech.brave.service.ITechHttpClient;
import cn.quantgroup.tech.brave.service.ITechOkHttpClient;
import cn.quantgroup.tech.brave.service.ITechRabbitBuilder;
import cn.quantgroup.tech.brave.service.TechRabbitBuilderNoTrace;
import cn.quantgroup.tech.brave.service.TechRabbitBuilderTrace;
import cn.quantgroup.tech.brave.service.ITechRestTemplateBuilder;
import cn.quantgroup.tech.brave.service.impl.TechHttpClientNoTrace;
import cn.quantgroup.tech.brave.service.impl.TechHttpClientTrace;
import cn.quantgroup.tech.brave.service.impl.TechOkHttpClientNoTrace;
import cn.quantgroup.tech.brave.service.impl.TechOkHttpClientTrace;
import cn.quantgroup.tech.brave.service.impl.TechRabbitBuilderNoTrace;
import cn.quantgroup.tech.brave.service.impl.TechRabbitBuilderTrace;
import cn.quantgroup.tech.brave.service.impl.TechRestTemplateBuliderNoTrace;
import cn.quantgroup.tech.brave.slf4j.MDCCurrentTraceContext;
import lombok.extern.slf4j.Slf4j;
import okhttp3.Dispatcher;
......@@ -56,6 +64,7 @@ public class BraveAutoConfiguration {
@Configuration
public static class BraveUntEnabled {
@Configuration
@ConditionalOnClass(RabbitTemplate.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "false", matchIfMissing = true)
......@@ -71,6 +80,7 @@ public class BraveAutoConfiguration {
}
}
@Deprecated
@Configuration
@ConditionalOnClass(HttpClient.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "false", matchIfMissing = true)
......@@ -80,6 +90,7 @@ public class BraveAutoConfiguration {
*
* @return
*/
@Deprecated
@Bean(name = "techHttpClientBuilder")
public HttpClientBuilder httpClientBuilder() {
log.info("注册HttpClientBuilder");
......@@ -87,6 +98,7 @@ public class BraveAutoConfiguration {
}
}
@Deprecated
@Configuration
@ConditionalOnClass(OkHttpClient.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "false", matchIfMissing = true)
......@@ -97,6 +109,7 @@ public class BraveAutoConfiguration {
*
* @return
*/
@Deprecated
@Bean(name = "techOkHttpClientBuilder")
public OkHttpClient.Builder okHttpClientBuilder() {
log.info("注册OkHttpClient.Builder");
......@@ -104,6 +117,7 @@ public class BraveAutoConfiguration {
}
}
@Deprecated
@Configuration
@ConditionalOnClass(RestTemplate.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "false", matchIfMissing = true)
......@@ -113,6 +127,7 @@ public class BraveAutoConfiguration {
*
* @return
*/
@Deprecated
@Bean(name = "techRestTemplate")
public RestTemplate restTemplate() {
log.info("添加restTemplate拦截器");
......@@ -120,6 +135,56 @@ public class BraveAutoConfiguration {
}
}
@Configuration
@ConditionalOnClass(HttpClient.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "false", matchIfMissing = true)
public static class TechHttpClientEnable {
/**
* 提供TechHttpClientBuilder
*
* @return
*/
@Bean(name = "techHttpClient")
public ITechHttpClient techHttpClient() {
log.info("注册ITechHttpClient, 没有开启brave");
return new TechHttpClientNoTrace();
}
}
@Configuration
@ConditionalOnClass(OkHttpClient.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "false", matchIfMissing = true)
public static class TechOkHttpClientEnable {
/**
* 提供TechOkHttpClient
*
* @return
*/
@Bean(name = "techOkHttpClient")
public ITechOkHttpClient techOkHttpClient() {
log.info("注册ITechOkClient, 没有开启brave");
return new TechOkHttpClientNoTrace();
}
}
@Configuration
@ConditionalOnClass(RestTemplate.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "false", matchIfMissing = true)
public static class TechRestTemplateEnable {
/**
* 提供TechRestTemplate
*
* @return
*/
@Bean(name = "techRestTemplateBuilder")
public ITechRestTemplateBuilder techRestTemplate() {
log.info("注册TechRestTemplate, 没有开始brave");
return new TechRestTemplateBuliderNoTrace();
}
}
}
@Configuration
......@@ -156,13 +221,13 @@ public class BraveAutoConfiguration {
.spanReporter(spanReporter()).build();
}
@Deprecated
@Bean
@ConditionalOnMissingBean
public HttpTracing httpTracing(Tracing tracing) {
return HttpTracing.create(tracing);
}
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({Filter.class})
......@@ -215,6 +280,7 @@ public class BraveAutoConfiguration {
}
}
@Deprecated
@Configuration
@ConditionalOnClass(HttpClient.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "true", matchIfMissing = true)
......@@ -225,6 +291,7 @@ public class BraveAutoConfiguration {
* @param tracing
* @return
*/
@Deprecated
@Bean(name = "techHttpClientBuilder")
public HttpClientBuilder httpClientBuilder(Tracing tracing) {
log.info("注册braveHttpClientBuilder");
......@@ -232,6 +299,7 @@ public class BraveAutoConfiguration {
}
}
@Deprecated
@Configuration
@ConditionalOnClass(OkHttpClient.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "true", matchIfMissing = true)
......@@ -242,6 +310,7 @@ public class BraveAutoConfiguration {
* @param httpTracing
* @return
*/
@Deprecated
@Bean(name = "techOkHttpClientBuilder")
public OkHttpClient.Builder okHttpClientBuilder(HttpTracing httpTracing) {
log.info("注册braveOkHttpClient.Builder");
......@@ -252,6 +321,7 @@ public class BraveAutoConfiguration {
}
@Deprecated
@Configuration
@ConditionalOnClass(RestTemplate.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "true", matchIfMissing = true)
......@@ -265,6 +335,7 @@ public class BraveAutoConfiguration {
*
* @return
*/
@Deprecated
@Bean(name = "techRestTemplate")
public RestTemplate restTemplate() {
log.info("添加braveRestTemplate拦截器");
......@@ -277,6 +348,59 @@ public class BraveAutoConfiguration {
}
}
@Configuration
@ConditionalOnClass(HttpClient.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "true", matchIfMissing = true)
public static class TechHttpClientEnable {
/**
* 提供TechHttpClientBuilder
*
* @param tracing
* @return
*/
@Bean(name = "techHttpClient")
public ITechHttpClient techHttpClient(Tracing tracing) {
log.info("注册ITechHttpClient, 已开启brave");
return new TechHttpClientTrace(tracing);
}
}
@Configuration
@ConditionalOnClass(OkHttpClient.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "true", matchIfMissing = true)
public static class TechOkHttpClientEnable {
/**
* 提供OkHttpClientBean
*
* @param tracing
* @return
*/
@Bean(name = "techOkHttpClient")
public ITechOkHttpClient techOkHttpClient(Tracing tracing) {
log.info("注册ITechOkHttpClient, 已开启brave");
return new TechOkHttpClientTrace(tracing);
}
}
@Configuration
@ConditionalOnClass(RestTemplate.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "true", matchIfMissing = true)
@Import(TracingClientHttpRequestInterceptor.class)
public static class TechRestTemplateEnable {
private TracingClientHttpRequestInterceptor clientInterceptor;
/**
* 提供RestTemplate
*
* @return
*/
@Deprecated
@Bean(name = "techRestTemplate")
public RestTemplate restTemplate() {
}
}
}
}
......
package cn.quantgroup.tech.brave.service;
import org.apache.http.impl.client.HttpClientBuilder;
/**
* @author zhangheng
* create on 2018.05.17
*/
public interface ITechHttpClient {
/**
* 构建HttpClientBuilder
*
* @return
*/
HttpClientBuilder createHttpClientBuilder();
}
package cn.quantgroup.tech.brave.service;
import okhttp3.OkHttpClient;
/**
* @author zhangheng
* create on 2018.05.17
*/
public interface ITechOkHttpClient {
/**
* 构建OkHttpClient.Builder
*
* @return
*/
OkHttpClient.Builder createOkHttpClientBuilder();
}
package cn.quantgroup.tech.brave.service;
import org.springframework.web.client.RestTemplate;
/**
* @author zhangheng
* create on 2018.05.17
*/
public interface ITechRestTemplateBuilder {
/**
* 构建RestTemplate
*
* @return
*/
RestTemplate createRestTemplate();
}
package cn.quantgroup.tech.brave.service.impl;
import cn.quantgroup.tech.brave.service.ITechHttpClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.impl.client.HttpClientBuilder;
/**
* @author zhangheng
* create on 2018.05.17
*/
@Slf4j
public class TechHttpClientNoTrace implements ITechHttpClient{
@Override
public HttpClientBuilder createHttpClientBuilder() {
log.info("构建HttpClientBuilder");
return HttpClientBuilder.create();
}
}
package cn.quantgroup.tech.brave.service.impl;
import brave.Tracing;
import brave.httpclient.TracingHttpClientBuilder;
import cn.quantgroup.tech.brave.service.ITechHttpClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.impl.client.HttpClientBuilder;
/**
* @author zhangheng
* create on 2018.05.17
*/
@Slf4j
public class TechHttpClientTrace implements ITechHttpClient {
private Tracing tracing;
public TechHttpClientTrace(Tracing tracing) {
this.tracing = tracing;
}
@Override
public HttpClientBuilder createHttpClientBuilder() {
log.info("构建brave-HttpClientBuilder");
return TracingHttpClientBuilder.create(tracing);
}
}
package cn.quantgroup.tech.brave.service.impl;
import cn.quantgroup.tech.brave.service.ITechOkHttpClient;
import lombok.extern.slf4j.Slf4j;
import okhttp3.OkHttpClient;
/**
* @author zhangheng
* create on 2018.05.17
*/
@Slf4j
public class TechOkHttpClientNoTrace implements ITechOkHttpClient{
@Override
public OkHttpClient.Builder createOkHttpClientBuilder() {
log.info("构建OkHttpClient.Builder");
return new OkHttpClient.Builder();
}
}
package cn.quantgroup.tech.brave.service.impl;
import brave.Tracing;
import brave.http.HttpTracing;
import brave.okhttp3.TracingInterceptor;
import cn.quantgroup.tech.brave.service.ITechOkHttpClient;
import lombok.extern.slf4j.Slf4j;
import okhttp3.Dispatcher;
import okhttp3.OkHttpClient;
/**
* @author zhangheng
* create on 2018.05.17
*/
@Slf4j
public class TechOkHttpClientTrace implements ITechOkHttpClient{
private Tracing tracing;
public TechOkHttpClientTrace(Tracing tracing) {
this.tracing = tracing;
}
@Override
public OkHttpClient.Builder createOkHttpClientBuilder() {
log.info("构建brave-OkHttpClient.Builder");
HttpTracing httpTracing = HttpTracing.create(tracing);
return new OkHttpClient.Builder()
.dispatcher(new Dispatcher(httpTracing.tracing().currentTraceContext().executorService(new Dispatcher().executorService())))
.addNetworkInterceptor(TracingInterceptor.create(httpTracing));
}
}
package cn.quantgroup.tech.brave.service;
package cn.quantgroup.tech.brave.service.impl;
import cn.quantgroup.tech.brave.service.ITechRabbitBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -8,17 +10,20 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
* @author zhangheng
* create on 2018.04.27
*/
@Slf4j
public class TechRabbitBuilderNoTrace implements ITechRabbitBuilder {
public TechRabbitBuilderNoTrace() {
}
@Override
public RabbitTemplate createRabbitTemplate(ConnectionFactory connectionFactory) {
log.info("构建RabbitTemplate");
return new RabbitTemplate(connectionFactory);
}
@Override
public SimpleRabbitListenerContainerFactory createSimpleRabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
log.info("构建SimpleRabbitListenerContainerFactory");
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
return factory;
......
package cn.quantgroup.tech.brave.service;
package cn.quantgroup.tech.brave.service.impl;
import brave.Tracing;
import brave.spring.rabbit.SpringRabbitTracing;
import cn.quantgroup.tech.brave.service.ITechRabbitBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -10,6 +12,7 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
* @author zhangheng
* create on 2018.04.27
*/
@Slf4j
public class TechRabbitBuilderTrace implements ITechRabbitBuilder {
private SpringRabbitTracing.Builder springRabbitTracingBuilder;
......@@ -19,6 +22,7 @@ public class TechRabbitBuilderTrace implements ITechRabbitBuilder {
@Override
public RabbitTemplate createRabbitTemplate(ConnectionFactory connectionFactory) {
log.info("构建brave-RabbitTemplate");
String virtualHost = connectionFactory.getVirtualHost();
SpringRabbitTracing.Builder builder = springRabbitTracingBuilder.remoteServiceName("MQ-" + virtualHost);
return builder.build().newRabbitTemplate(connectionFactory);
......@@ -26,6 +30,7 @@ public class TechRabbitBuilderTrace implements ITechRabbitBuilder {
@Override
public SimpleRabbitListenerContainerFactory createSimpleRabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
log.info("构建brave-SimpleRabbitListenerContainerFactory");
String virtualHost = connectionFactory.getVirtualHost();
SpringRabbitTracing.Builder builder = springRabbitTracingBuilder.remoteServiceName("MQ-" + virtualHost);
return builder.build().newSimpleRabbitListenerContainerFactory(connectionFactory);
......
package cn.quantgroup.tech.brave.service.impl;
import brave.spring.web.TracingClientHttpRequestInterceptor;
import cn.quantgroup.tech.brave.service.ITechRestTemplateBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Import;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.List;
/**
* @author zhangheng
* create on 2018.05.17
*/
@Slf4j
@Import( TracingClientHttpRequestInterceptor.class )
public class TechRestTemplateBuilderTrace implements ITechRestTemplateBuilder {
@Autowired
private TracingClientHttpRequestInterceptor clientInterceptor;
@Override
public RestTemplate createRestTemplate() {
log.info("构建brave-RestTemplate拦截器");
RestTemplate restTemplate = new RestTemplate();
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>(restTemplate.getInterceptors());
interceptors.add(clientInterceptor);
restTemplate.setInterceptors(interceptors);
return restTemplate;
}
}
package cn.quantgroup.tech.brave.service.impl;
import cn.quantgroup.tech.brave.service.ITechRestTemplateBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.client.RestTemplate;
/**
* @author zhangheng
* create on 2018.05.17
*/
@Slf4j
public class TechRestTemplateBuliderNoTrace implements ITechRestTemplateBuilder {
@Override
public RestTemplate createRestTemplate() {
log.info("构建RestTemplate");
return new RestTemplate();
}
}
......@@ -5,7 +5,7 @@
<parent>
<artifactId>commons-parent</artifactId>
<groupId>cn.quantgroup</groupId>
<version>0.2.3</version>
<version>0.2.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>commons-parent</artifactId>
<groupId>cn.quantgroup</groupId>
<version>0.2.3</version>
<version>0.2.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>commons-parent</artifactId>
<groupId>cn.quantgroup</groupId>
<version>0.2.3</version>
<version>0.2.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,7 +6,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>cn.quantgroup</groupId>
<artifactId>commons-parent</artifactId>
<version>0.2.3</version>
<version>0.2.4</version>
<parent>
<groupId>org.springframework.boot</groupId>
......@@ -33,7 +33,7 @@
<lombok.version>1.16.20</lombok.version>
<guava.version>23.0</guava.version>
<apollo.client.version>0.10.2</apollo.client.version>
<common.parent.version>0.2.3</common.parent.version>
<common.parent.version>0.2.4</common.parent.version>
</properties>
<dependencies>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment