10. 命名跨度

选择span名称并非易事。span名称应表示操作名称。 名称应该是低基数性的,因此不应该包括标识符。spring-doc.cadn.net.cn

Since there is a lot of instrumentation going on, some span names are artificial:spring-doc.cadn.net.cn

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

10.1. @SpanName 注释配置

您可以使用注释@SpanName显式命名跨度,如以下示例所示:spring-doc.cadn.net.cn

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

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

}

在本例中,以以下方式处理时,span 被命名为calculateTaxspring-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的span,如下面的示例所示: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();