修改RabbitTemplate方式

parent de5fd18c
......@@ -12,6 +12,10 @@ import brave.spring.web.TracingClientHttpRequestInterceptor;
import brave.spring.webmvc.DelegatingTracingFilter;
import brave.spring.webmvc.SpanCustomizingAsyncHandlerInterceptor;
import cn.quantgroup.tech.brave.properties.BraveProperties;
import cn.quantgroup.tech.brave.service.IRabbitTemplateBuilder;
import cn.quantgroup.tech.brave.service.RabbitTemplateBuilderNoTrace;
import cn.quantgroup.tech.brave.service.RabbitTemplateBuilderTrace;
import cn.quantgroup.tech.brave.service.SpringRabbit;
import lombok.extern.slf4j.Slf4j;
import okhttp3.Dispatcher;
import okhttp3.OkHttpClient;
......@@ -86,6 +90,15 @@ public class BraveAutoConfiguration {
return new RestTemplate();
}
/**
* 提供RabbitTemplateBuilder,业务系统需要使用该Builder生成RabbitTemplate
*
* @return
*/
@Bean (name = "teachRabbitTemplateBuilder")
public IRabbitTemplateBuilder rabbitTemplateBuilder() {
return new RabbitTemplateBuilderNoTrace();
}
}
@Configuration
......@@ -135,9 +148,9 @@ public class BraveAutoConfiguration {
* @param tracing
* @return
*/
@Bean
public SpringRabbitTracing.Builder springRabbitTracingBuilder(Tracing tracing) {
return SpringRabbitTracing.newBuilder(tracing);
@Bean (name = "teachRabbitTemplateBuilder")
public IRabbitTemplateBuilder rabbitTemplateBuilder(Tracing tracing) {
return new RabbitTemplateBuilderTrace(tracing);
}
/**
......
......@@ -15,17 +15,17 @@ public class BraveProperties {
/**
* 指定serviceName
*/
private String serviceName;
private String serviceName = "brave";
/**
* kafka地址
*/
private String kafkaHost;
private String kafkaHost = "localhost:9092";
/**
* kafka的topic
*/
private String kafkaTopic;
private String kafkaTopic = "quantGroup.tech.brave.dev";
/**
* 采集率
......
package cn.quantgroup.tech.brave.service;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
public interface IRabbitTemplateBuilder {
/**
*
* @param remoteServiceName
* @return
*/
IRabbitTemplateBuilder remoteServiceName(String remoteServiceName);
/**
*
* @param connectionFactory
* @return
*/
RabbitTemplate build(ConnectionFactory connectionFactory);
}
package cn.quantgroup.tech.brave.service;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
/**
* @author zhangheng
* create on 2018.04.27
*/
public class RabbitTemplateBuilderNoTrace implements IRabbitTemplateBuilder{
private SpringRabbit.Builder springRabbitBuilder;
public RabbitTemplateBuilderNoTrace(){
springRabbitBuilder = SpringRabbit.newBuilder();
}
@Override
public IRabbitTemplateBuilder remoteServiceName(String remoteServiceName) {
springRabbitBuilder.remoteServiceName(remoteServiceName);
return this;
}
@Override
public RabbitTemplate build(ConnectionFactory connectionFactory) {
return springRabbitBuilder.build().newRabbitTemplate(connectionFactory);
}
}
package cn.quantgroup.tech.brave.service;
import brave.Tracing;
import brave.spring.rabbit.SpringRabbitTracing;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
/**
* @author zhangheng
* create on 2018.04.27
*/
public class RabbitTemplateBuilderTrace implements IRabbitTemplateBuilder{
private SpringRabbitTracing.Builder springRabbitTracingBuilder;
public RabbitTemplateBuilderTrace (Tracing tracing){
springRabbitTracingBuilder = SpringRabbitTracing.newBuilder(tracing);
}
@Override
public IRabbitTemplateBuilder remoteServiceName(String remoteServiceName) {
springRabbitTracingBuilder.remoteServiceName(remoteServiceName);
return this;
}
@Override
public RabbitTemplate build(ConnectionFactory connectionFactory) {
return springRabbitTracingBuilder.build().newRabbitTemplate(connectionFactory);
}
}
package cn.quantgroup.tech.brave.service;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
/**
* @author zhangheng
* create on 2018.04.27
*/
public class SpringRabbit {
public static SpringRabbit create() {
return new SpringRabbit.Builder().build();
}
public static SpringRabbit.Builder newBuilder() {
return new SpringRabbit.Builder();
}
public static final class Builder {
String remoteServiceName = "rabbitmq";
Builder() {
}
/**
* The remote service name that describes the broker in the dependency graph. Defaults to
* "rabbitmq"
*/
public SpringRabbit.Builder remoteServiceName(String remoteServiceName) {
this.remoteServiceName = remoteServiceName;
return this;
}
public SpringRabbit build() {
return new SpringRabbit(this);
}
}
SpringRabbit(SpringRabbit.Builder builder) { // intentionally hidden constructor
String remoteServiceName = builder.remoteServiceName;
}
/**
* Creates an instrumented {@linkplain RabbitTemplate}
*/
public RabbitTemplate newRabbitTemplate(ConnectionFactory connectionFactory) {
return new RabbitTemplate(connectionFactory);
}
}
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