Skip to content

Dubbo自扩展Filter和ExtensionFactory在阿里云EDAS环境下无效果 #2089

@mostcool

Description

@mostcool

根据dubbo的Filter和ExtensionFactory扩展方式,自己扩展了一个Filter和ExtensionFactory

`@activate(group = {Constants.PROVIDER, Constants.CONSUMER}, value = "tracing")
public final class TracingFilter implements Filter {

private static Logger logger = LoggerFactory.getLogger(TracingFilter.class);

Tracer tracer;
TraceContext.Extractor<Map<String, String>> extractor;
TraceContext.Injector<Map<String, String>> injector;

public void setTracing(Tracing tracing) {
tracer = tracing.tracer();
extractor = tracing.propagation().extractor(GETTER);
injector = tracing.propagation().injector(SETTER);
}

@OverRide
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
logger.info("Dubbo Parameters ==>> " + invoker.getUrl().getParameters());
logger.info("Interface ==>> " + buildSpanName(invoker, invocation));

if (tracer == null) {
    logger.info("Tracer is null.");
    return invoker.invoke(invocation);
}

//do something...

}`

`public class TracingExtensionFactory implements ExtensionFactory {

@Autowired
Tracing tracing;

@Override
public <T> T getExtension(Class<T> type, String name) {
    if (type != Tracing.class) {
        return null;
    }
    if (tracing == null) {
        return null;
    }
    return (T) tracing;
}

}`

`@Configuration
@ConditionalOnProperty(name = "dubbo.zipkin.enabled", matchIfMissing = false, havingValue = "true")
public class TracingConfiguration {

@Value("${spring.application.name}")
private String serverName = "UNKNOWN";

@Value("${dubbo.zipkin.endpoint}")
private String endpoint = "http://localhost:9411/api/v2/spans";

@Value("${dubbo.zipkin.rate}")
private float rate = 1.0f;

@Bean
public Sender sender() {
    return OkHttpSender.create(endpoint);
}

@Bean
public AsyncReporter<Span> spanReporter() {
    return AsyncReporter.create(sender());
}

@Bean
public Tracing tracing() {
    return Tracing.newBuilder()
            .localServiceName(serverName)
            .spanReporter(spanReporter())
            .sampler(Sampler.create(rate))
            .build();
}

}`

配置如下:
image

image

image

在本机spring boot方式启动时,可以正常进入filter,并执行后续逻辑

但在使用阿里云EDAS环境时,始终进入不了自己扩展的Filter和ExtensionFactory

请问这与EDAS环境有关吗?如何解决?

for example:
https://github.com/34176470/springboot-dubbo-zipkin-brave.git

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedEverything needs help from contributors

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions