修改rabbit构建方式

parent 08bcd901
......@@ -11,9 +11,9 @@ 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.ITechRabbitBuilder;
import cn.quantgroup.tech.brave.service.TechRabbitBuilderNoTrace;
import cn.quantgroup.tech.brave.service.TechRabbitBuilderTrace;
import lombok.extern.slf4j.Slf4j;
import okhttp3.Dispatcher;
import okhttp3.OkHttpClient;
......@@ -110,8 +110,8 @@ public class BraveAutoConfiguration {
* @return
*/
@Bean( name = "techRabbitTemplateBuilder" )
public IRabbitTemplateBuilder rabbitTemplateBuilder() {
return new RabbitTemplateBuilderNoTrace();
public ITechRabbitBuilder rabbitTemplateBuilder() {
return new TechRabbitBuilderNoTrace();
}
}
......@@ -156,15 +156,16 @@ public class BraveAutoConfiguration {
return HttpTracing.create(tracing);
}
/**
* 提供RabbitTemplateBuilder,业务系统需要使用该Builder生成RabbitTemplate
*
* @param tracing
* @return
*/
@Bean( name = "techRabbitTemplateBuilder" )
public IRabbitTemplateBuilder rabbitTemplateBuilder(Tracing tracing) {
return new RabbitTemplateBuilderTrace(tracing);
@Bean( name = "techRabbitBuilder" )
public ITechRabbitBuilder rabbitTemplateBuilder(Tracing tracing) {
return new TechRabbitBuilderTrace(tracing);
}
/**
......
package cn.quantgroup.tech.brave.service;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -7,18 +8,25 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
* @author zhangheng
* create on 2018.04.27
*/
public interface IRabbitTemplateBuilder {
public interface ITechRabbitBuilder {
/**
* 设定Mq的名称
* @param remoteServiceName
* @return
*/
IRabbitTemplateBuilder remoteServiceName(String remoteServiceName);
ITechRabbitBuilder remoteServiceName(String remoteServiceName);
/**
* 构建RabbitTemplate
* @param connectionFactory
* @return
*/
RabbitTemplate build(ConnectionFactory connectionFactory);
RabbitTemplate crateRabbitTemplate(ConnectionFactory connectionFactory);
/**
* 构建SimpleRabbitListenerContainerFactory
* @param connectionFactory
* @return
*/
SimpleRabbitListenerContainerFactory createSimpleRabbitListenerContainerFactory(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 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);
}
}
package cn.quantgroup.tech.brave.service;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
/**
* @author zhangheng
* create on 2018.04.27
*/
public class TechRabbitBuilderNoTrace implements ITechRabbitBuilder {
public TechRabbitBuilderNoTrace(){
}
@Override
public ITechRabbitBuilder remoteServiceName(String remoteServiceName) {
return this;
}
@Override
public RabbitTemplate crateRabbitTemplate(ConnectionFactory connectionFactory) {
return new RabbitTemplate(connectionFactory);
}
@Override
public SimpleRabbitListenerContainerFactory createSimpleRabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
return factory;
}
}
......@@ -2,6 +2,7 @@ package cn.quantgroup.tech.brave.service;
import brave.Tracing;
import brave.spring.rabbit.SpringRabbitTracing;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -9,21 +10,26 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
* @author zhangheng
* create on 2018.04.27
*/
public class RabbitTemplateBuilderTrace implements IRabbitTemplateBuilder{
public class TechRabbitBuilderTrace implements ITechRabbitBuilder {
private SpringRabbitTracing.Builder springRabbitTracingBuilder;
public RabbitTemplateBuilderTrace (Tracing tracing){
public TechRabbitBuilderTrace(Tracing tracing){
springRabbitTracingBuilder = SpringRabbitTracing.newBuilder(tracing);
}
@Override
public IRabbitTemplateBuilder remoteServiceName(String remoteServiceName) {
public ITechRabbitBuilder remoteServiceName(String remoteServiceName) {
springRabbitTracingBuilder.remoteServiceName(remoteServiceName);
return this;
}
@Override
public RabbitTemplate build(ConnectionFactory connectionFactory) {
public RabbitTemplate crateRabbitTemplate(ConnectionFactory connectionFactory) {
return springRabbitTracingBuilder.build().newRabbitTemplate(connectionFactory);
}
@Override
public SimpleRabbitListenerContainerFactory createSimpleRabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
return springRabbitTracingBuilder.build().newSimpleRabbitListenerContainerFactory(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