10. 命名 span

选择 span 名称并非易事。范围名称应描述作名称。 名称应为低基数,因此不应包含标识符。spring-doc.cadn.net.cn

由于正在进行大量插桩,因此一些 span 名称是人为的:spring-doc.cadn.net.cn

幸运的是,对于异步处理,您可以提供显式命名。spring-doc.cadn.net.cn

10.1.@SpanName注解

您可以使用@SpanNameannotation 中,如以下示例所示:spring-doc.cadn.net.cn

@SpanName("calculateTax")
class TaxCountingRunnable implements Runnable {

    @Override
    public void run() {
        // perform logic
    }

}

在这种情况下,当按以下方式处理时,span 将命名为calculateTax:spring-doc.cadn.net.cn

Runnable runnable = new TraceRunnable(this.tracing, spanNamer,
        new TaxCountingRunnable());
Future<?> future = executorService.submit(runnable);
// ... some additional logic ...
future.get();

10.2.toString()方法

RunnableCallable. 通常,可以创建这些类的匿名实例。 您不能注释此类。 为了克服这个限制,如果没有@SpanName注解存在时,我们检查该类是否具有toString()方法。spring-doc.cadn.net.cn

运行此类代码会导致创建一个名为calculateTax,如以下示例所示:spring-doc.cadn.net.cn

Runnable runnable = new TraceRunnable(this.tracing, spanNamer, new Runnable() {
    @Override
    public void run() {
        // perform logic
    }

    @Override
    public String toString() {
        return "calculateTax";
    }
});
Future<?> future = executorService.submit(runnable);
// ... some additional logic ...
future.get();