Commit 2a7e8d6f authored by 杨锐's avatar 杨锐

resolve TechExecutorServiceBuilderTrace @Component、@ConditionalOnClass({ElasticJob.class})

parent d667eabc
......@@ -17,6 +17,7 @@
<zipkin-reporter2.version>2.5.0</zipkin-reporter2.version>
<zipkin.version>2.6.1</zipkin.version>
<okhttp.version>3.10.0</okhttp.version>
<elastic.job.version>2.1.5</elastic.job.version>
</properties>
<dependencyManagement>
......@@ -45,6 +46,12 @@
<artifactId>spring-boot-starter-aop</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-spring-shaded</artifactId>
<version>${elastic.job.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
......
package cn.quantgroup.tech.brave.aspect;
import brave.Tracer;
import brave.Tracing;
import com.dangdang.ddframe.job.api.ElasticJob;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import javax.annotation.Resource;
@Aspect
@Configuration
@ConditionalOnClass(ElasticJob.class)
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "true", matchIfMissing = true)
public class ElasticJobAspect {
@Resource
private Tracing tracing;
@Around("target(com.dangdang.ddframe.job.api.ElasticJob)")
public Object dynamicTrace(ProceedingJoinPoint pjp) throws Throwable {
Tracer tracer = tracing.tracer();
/* 防止应用层非法使用(上下文中存在span),不生成root span。 */
if (tracer.currentSpan() == null) {
brave.Span span = tracer.newTrace();
try (Tracer.SpanInScope ws = tracer.withSpanInScope(span)) {
return pjp.proceed();
// note: try-with-resources closes the scope *before* the catch block
} catch (RuntimeException | Error e) {
span.error(e);
throw e;
} finally {
span.finish();
}
}
return pjp.proceed();
}
}
package cn.quantgroup.tech.brave.configuration;
import brave.Tracer;
import brave.Tracing;
import brave.http.HttpTracing;
import brave.httpclient.TracingHttpClientBuilder;
......@@ -12,27 +11,14 @@ import brave.spring.webmvc.SpanCustomizingAsyncHandlerInterceptor;
import cn.quantgroup.tech.brave.filter.CustomDelegatingTracingFilter;
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.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.TechRestTemplateBuilderTrace;
import cn.quantgroup.tech.brave.service.impl.TechRestTemplateBuliderNoTrace;
import cn.quantgroup.tech.brave.service.*;
import cn.quantgroup.tech.brave.service.impl.*;
import cn.quantgroup.tech.brave.slf4j.MDCCurrentTraceContext;
import lombok.extern.slf4j.Slf4j;
import okhttp3.Dispatcher;
import okhttp3.OkHttpClient;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
......@@ -45,7 +31,6 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
......@@ -55,7 +40,6 @@ import zipkin2.reporter.AsyncReporter;
import zipkin2.reporter.Sender;
import zipkin2.reporter.kafka11.KafkaSender;
import javax.annotation.Resource;
import javax.servlet.Filter;
import java.util.ArrayList;
import java.util.List;
......@@ -195,7 +179,15 @@ public class BraveAutoConfiguration {
}
}
@Configuration
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "false", matchIfMissing = true)
public static class TechExecutorServiceEnable {
@Bean(name = "techExecutorServiceBuilder")
public ITechExecutorServiceBuilder techExecutorServiceBuilder() {
return new TechExecutorServiceBuilderNoTrace();
}
}
}
@Configuration
......@@ -413,37 +405,13 @@ public class BraveAutoConfiguration {
}
}
}
@Configuration
@ConditionalOnProperty(prefix = "tech.brave", name = "enabled", havingValue = "true", matchIfMissing = true)
public static class TechExecutorServiceEnable {
@Configuration
@ConditionalOnProperty(name = "elastic.job.enabled", havingValue = "true")
public static class ElasticJobEnabled {
@Aspect
@Component
public class ElasticJobAspect {
@Resource
private Tracing tracing;
@Around("target(com.dangdang.ddframe.job.api.ElasticJob)")
public Object dynamicTrace(ProceedingJoinPoint pjp) throws Throwable {
Tracer tracer = tracing.tracer();
/* 防止应用层非法使用(上下文中存在span),不生成root span。 */
if (tracer.currentSpan() == null) {
brave.Span span = tracer.newTrace();
try (Tracer.SpanInScope ws = tracer.withSpanInScope(span)) {
return pjp.proceed();
// note: try-with-resources closes the scope *before* the catch block
} catch (RuntimeException | Error e) {
span.error(e);
throw e;
} catch (Throwable e1) {
throw e1;
} finally {
span.finish();
}
}
return pjp.proceed();
@Bean(name = "techExecutorServiceBuilder")
public ITechExecutorServiceBuilder techExecutorServiceBuilder() {
return new TechExecutorServiceBuilderTrace();
}
}
}
......
......@@ -2,7 +2,6 @@ package cn.quantgroup.tech.brave.service.impl;
import cn.quantgroup.tech.brave.service.ITechExecutorServiceBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.concurrent.ExecutorService;
......@@ -13,7 +12,6 @@ import java.util.concurrent.ExecutorService;
* @author: yangrui
*/
@Slf4j
@Component
public class TechExecutorServiceBuilderNoTrace implements ITechExecutorServiceBuilder {
@Override
public ExecutorService buildExecutorService(ExecutorService executorService) {
......
......@@ -4,7 +4,6 @@ import brave.propagation.CurrentTraceContext;
import cn.quantgroup.tech.brave.service.ITechExecutorServiceBuilder;
import cn.quantgroup.tech.brave.slf4j.MDCCurrentTraceContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.concurrent.ExecutorService;
......@@ -16,7 +15,6 @@ import java.util.concurrent.ExecutorService;
* @author: yangrui
*/
@Slf4j
@Component
public class TechExecutorServiceBuilderTrace implements ITechExecutorServiceBuilder {
@Override
public ExecutorService buildExecutorService(ExecutorService executorService) {
......
......@@ -34,7 +34,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.5.5</common.parent.version>
<common.parent.version>0.2.6</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