Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
commons
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DevOps
commons
Commits
de5fd18c
Commit
de5fd18c
authored
Apr 27, 2018
by
技术部-高工-张恒
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
组入brave配置开关
parent
53944fe0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
149 additions
and
99 deletions
+149
-99
BraveAutoConfiguration.java
...roup/tech/brave/configuration/BraveAutoConfiguration.java
+149
-99
No files found.
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/configuration/BraveAutoConfiguration.java
View file @
de5fd18c
...
@@ -18,6 +18,7 @@ import okhttp3.OkHttpClient;
...
@@ -18,6 +18,7 @@ import okhttp3.OkHttpClient;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.AutoConfigureOrder
;
import
org.springframework.boot.autoconfigure.AutoConfigureOrder
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
...
@@ -46,108 +47,157 @@ import java.util.List;
...
@@ -46,108 +47,157 @@ import java.util.List;
@Slf4j
@Slf4j
@Configuration
@Configuration
@AutoConfigureOrder
@AutoConfigureOrder
@EnableWebMvc
public
class
BraveAutoConfiguration
{
@EnableConfigurationProperties
(
BraveProperties
.
class
)
@Configuration
@Import
(
{
TracingClientHttpRequestInterceptor
.
class
,
SpanCustomizingAsyncHandlerInterceptor
.
class
}
)
@EnableWebMvc
public
class
BraveAutoConfiguration
extends
WebMvcConfigurerAdapter
{
@EnableConfigurationProperties
(
BraveProperties
.
class
)
@Autowired
@ConditionalOnProperty
(
prefix
=
"tech.brave"
,
name
=
"enabled"
,
havingValue
=
"false"
)
private
BraveProperties
braveProperties
;
public
static
class
BraveUntEnabled
{
/**
* 提供HttpClientBuilderBean
*
* @return
*/
@Bean
(
name
=
"techHttpClientBuilder"
)
public
HttpClientBuilder
httpClientBuilder
()
{
log
.
info
(
"注册HttpClientBuilder"
);
return
TracingHttpClientBuilder
.
create
();
}
/**
* 提供OkHttpClientBean
*
* @return
*/
@Bean
(
name
=
"techOkHttpClientBuilder"
)
public
OkHttpClient
.
Builder
okHttpClientBuilder
()
{
log
.
info
(
"注册OkHttpClient.Builder"
);
return
new
OkHttpClient
.
Builder
();
}
/**
* 提供RestTemplate
*
* @return
*/
@Bean
(
name
=
"techRestTemplate"
)
public
RestTemplate
restTemplate
()
{
log
.
info
(
"添加restTemplate拦截器"
);
return
new
RestTemplate
();
}
@Autowired
private
TracingClientHttpRequestInterceptor
clientInterceptor
;
@Autowired
private
SpanCustomizingAsyncHandlerInterceptor
spanCustomizingAsyncHandlerInterceptor
;
@Bean
Sender
sender
()
{
return
KafkaSender
.
newBuilder
().
bootstrapServers
(
braveProperties
.
getKafkaHost
()).
topic
(
braveProperties
.
getKafkaTopic
()).
encoding
(
Encoding
.
JSON
).
build
();
}
@Bean
AsyncReporter
<
Span
>
spanReporter
()
{
return
AsyncReporter
.
create
(
sender
());
}
@Bean
Tracing
tracing
()
{
return
Tracing
.
newBuilder
()
.
sampler
(
brave
.
sampler
.
Sampler
.
create
(
braveProperties
.
getSample
()))
.
localServiceName
(
braveProperties
.
getServiceName
())
.
propagationFactory
(
ExtraFieldPropagation
.
newFactory
(
B3Propagation
.
FACTORY
,
"user-name"
))
.
currentTraceContext
(
ThreadContextCurrentTraceContext
.
create
())
.
spanReporter
(
spanReporter
()).
build
();
}
@Bean
public
HttpTracing
httpTracing
(
Tracing
tracing
)
{
return
HttpTracing
.
create
(
tracing
);
}
/**
* 提供RabbitTemplateBuilder,业务系统需要使用该Builder生成RabbitTemplate
* @param tracing
* @return
*/
@Bean
public
SpringRabbitTracing
.
Builder
springRabbitTracingBuilder
(
Tracing
tracing
)
{
return
SpringRabbitTracing
.
newBuilder
(
tracing
);
}
/**
* 提供HttpClientBuilderBean
* @param tracing
* @return
*/
@Bean
(
name
=
"techHttpClientBuilder"
)
public
HttpClientBuilder
httpClientBuilder
(
Tracing
tracing
)
{
log
.
info
(
"注册HttpClientBuilder"
);
return
TracingHttpClientBuilder
.
create
(
tracing
);
}
/**
* 提供OkHttpClientBean
* @param httpTracing
* @return
*/
@Bean
(
name
=
"techOkHttpClientBuilder"
)
public
OkHttpClient
.
Builder
okHttpClientBuilder
(
HttpTracing
httpTracing
)
{
log
.
info
(
"注册OkHttpClient.Builder"
);
return
new
OkHttpClient
.
Builder
()
.
dispatcher
(
new
Dispatcher
(
httpTracing
.
tracing
().
currentTraceContext
().
executorService
(
new
Dispatcher
().
executorService
())))
.
addNetworkInterceptor
(
TracingInterceptor
.
create
(
httpTracing
));
}
/**
* 创建一个bean
*
* @return
*/
@Bean
(
name
=
"techDelegatingTracingFilter"
)
public
Filter
delegatingTracingFilter
()
{
return
new
DelegatingTracingFilter
();
}
/**
* 提供RestTemplate
* @return
*/
@Bean
(
name
=
"techRestTemplate"
)
public
RestTemplate
restTemplate
()
{
log
.
info
(
"添加restTemplate拦截器"
);
RestTemplate
restTemplate
=
new
RestTemplate
();
List
<
ClientHttpRequestInterceptor
>
interceptors
=
new
ArrayList
<>(
restTemplate
.
getInterceptors
());
interceptors
.
add
(
clientInterceptor
);
restTemplate
.
setInterceptors
(
interceptors
);
return
restTemplate
;
}
}
@Override
@Configuration
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
@EnableWebMvc
log
.
info
(
"添加webmvc拦截器"
);
@EnableConfigurationProperties
(
BraveProperties
.
class
)
registry
.
addInterceptor
(
spanCustomizingAsyncHandlerInterceptor
);
@ConditionalOnProperty
(
prefix
=
"tech.brave"
,
name
=
"enabled"
,
havingValue
=
"true"
)
@Import
(
{
TracingClientHttpRequestInterceptor
.
class
,
SpanCustomizingAsyncHandlerInterceptor
.
class
}
)
public
static
class
BraveEnabled
extends
WebMvcConfigurerAdapter
{
@Autowired
private
BraveProperties
braveProperties
;
@Autowired
private
TracingClientHttpRequestInterceptor
clientInterceptor
;
@Autowired
private
SpanCustomizingAsyncHandlerInterceptor
spanCustomizingAsyncHandlerInterceptor
;
@Bean
Sender
sender
()
{
return
KafkaSender
.
newBuilder
().
bootstrapServers
(
braveProperties
.
getKafkaHost
()).
topic
(
braveProperties
.
getKafkaTopic
()).
encoding
(
Encoding
.
JSON
).
build
();
}
@Bean
AsyncReporter
<
Span
>
spanReporter
()
{
return
AsyncReporter
.
create
(
sender
());
}
@Bean
Tracing
tracing
()
{
return
Tracing
.
newBuilder
()
.
sampler
(
brave
.
sampler
.
Sampler
.
create
(
braveProperties
.
getSample
()))
.
localServiceName
(
braveProperties
.
getServiceName
())
.
propagationFactory
(
ExtraFieldPropagation
.
newFactory
(
B3Propagation
.
FACTORY
,
"user-name"
))
.
currentTraceContext
(
ThreadContextCurrentTraceContext
.
create
())
.
spanReporter
(
spanReporter
()).
build
();
}
@Bean
public
HttpTracing
httpTracing
(
Tracing
tracing
)
{
return
HttpTracing
.
create
(
tracing
);
}
/**
* 提供RabbitTemplateBuilder,业务系统需要使用该Builder生成RabbitTemplate
*
* @param tracing
* @return
*/
@Bean
public
SpringRabbitTracing
.
Builder
springRabbitTracingBuilder
(
Tracing
tracing
)
{
return
SpringRabbitTracing
.
newBuilder
(
tracing
);
}
/**
* 提供HttpClientBuilderBean
*
* @param tracing
* @return
*/
@Bean
(
name
=
"techHttpClientBuilder"
)
public
HttpClientBuilder
httpClientBuilder
(
Tracing
tracing
)
{
log
.
info
(
"注册braveHttpClientBuilder"
);
return
TracingHttpClientBuilder
.
create
(
tracing
);
}
/**
* 提供OkHttpClientBean
*
* @param httpTracing
* @return
*/
@Bean
(
name
=
"techOkHttpClientBuilder"
)
public
OkHttpClient
.
Builder
okHttpClientBuilder
(
HttpTracing
httpTracing
)
{
log
.
info
(
"注册braveOkHttpClient.Builder"
);
return
new
OkHttpClient
.
Builder
()
.
dispatcher
(
new
Dispatcher
(
httpTracing
.
tracing
().
currentTraceContext
().
executorService
(
new
Dispatcher
().
executorService
())))
.
addNetworkInterceptor
(
TracingInterceptor
.
create
(
httpTracing
));
}
/**
* 创建一个bean
*
* @return
*/
@Bean
(
name
=
"techDelegatingTracingFilter"
)
public
Filter
delegatingTracingFilter
()
{
log
.
info
(
"注册DelegatingTracingFilter"
);
return
new
DelegatingTracingFilter
();
}
/**
* 提供RestTemplate
*
* @return
*/
@Bean
(
name
=
"techRestTemplate"
)
public
RestTemplate
restTemplate
()
{
log
.
info
(
"添加braveRestTemplate拦截器"
);
RestTemplate
restTemplate
=
new
RestTemplate
();
List
<
ClientHttpRequestInterceptor
>
interceptors
=
new
ArrayList
<>(
restTemplate
.
getInterceptors
());
interceptors
.
add
(
clientInterceptor
);
restTemplate
.
setInterceptors
(
interceptors
);
return
restTemplate
;
}
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
log
.
info
(
"添加braveWebmvc拦截器"
);
registry
.
addInterceptor
(
spanCustomizingAsyncHandlerInterceptor
);
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment