10. 命名 span
选择 span 名称并非易事。范围名称应描述操作名称。 名称应为低基数,因此不应包含标识符。
由于正在进行大量插桩,因此一些 span 名称是人为的:
-
controller-method-name
当被方法名称为controllerMethodName
-
async
对于使用 wrapped 和 interfaces 完成的异步操作。Callable
Runnable
-
带 Comments 的方法返回类的简单名称。
@Scheduled
幸运的是,对于异步处理,您可以提供显式命名。
10.1. @SpanName
注解
您可以使用注释显式命名 span,如以下示例所示:@SpanName
@SpanName("calculateTax")
class TaxCountingRunnable implements Runnable {
@Override
public void run() {
// perform logic
}
}
在这种情况下,当按以下方式处理时,span 将被命名为 :calculateTax
Runnable runnable = new TraceRunnable(this.tracing, spanNamer,
new TaxCountingRunnable());
Future<?> future = executorService.submit(runnable);
// ... some additional logic ...
future.get();
10.2. toString()
方法
为 或 创建单独的类是非常罕见的。
通常,可以创建这些类的匿名实例。
您不能注释此类。
为了克服该限制,如果不存在 Comments,我们将检查该类是否具有该方法的自定义实现。Runnable
Callable
@SpanName
toString()
运行此类代码会导致创建一个名为 的 span,如以下示例所示:calculateTax
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();