14
14
package io .opentracing .contrib .redis .common ;
15
15
16
16
import io .opentracing .Tracer ;
17
+
18
+ import java .util .Map ;
19
+ import java .util .concurrent .ConcurrentHashMap ;
17
20
import java .util .function .Function ;
18
21
19
22
public class TracingConfiguration {
@@ -22,13 +25,15 @@ public class TracingConfiguration {
22
25
private final boolean traceWithActiveSpanOnly ;
23
26
private final int keysMaxLength ;
24
27
private final Function <String , String > spanNameProvider ;
28
+ private final Map <String , String > extensionTags ;
25
29
26
30
private TracingConfiguration (Tracer tracer , boolean traceWithActiveSpanOnly , int keysMaxLength ,
27
- Function <String , String > spanNameProvider ) {
31
+ Function <String , String > spanNameProvider , Map < String , String > extensionTags ) {
28
32
this .tracer = tracer ;
29
33
this .traceWithActiveSpanOnly = traceWithActiveSpanOnly ;
30
34
this .keysMaxLength = keysMaxLength ;
31
35
this .spanNameProvider = spanNameProvider ;
36
+ this .extensionTags = extensionTags ;
32
37
}
33
38
34
39
public Tracer getTracer () {
@@ -47,11 +52,21 @@ public Function<String, String> getSpanNameProvider() {
47
52
return spanNameProvider ;
48
53
}
49
54
55
+ public Map <String , String > getExtensionTags () {
56
+ return extensionTags ;
57
+ }
58
+
59
+ public TracingConfiguration extensionTag (String key , String value ) {
60
+ this .extensionTags .putIfAbsent (key , value );
61
+ return this ;
62
+ }
63
+
50
64
public static class Builder {
51
65
private final Tracer tracer ;
52
66
private boolean traceWithActiveSpanOnly ;
53
67
private int keysMaxLength = DEFAULT_KEYS_MAX_LENGTH ;
54
68
private Function <String , String > spanNameProvider = RedisSpanNameProvider .OPERATION_NAME ;
69
+ private Map <String , String > extensionTags = new ConcurrentHashMap <>();
55
70
56
71
public Builder (Tracer tracer ) {
57
72
this .tracer = tracer ;
@@ -66,6 +81,18 @@ public Builder traceWithActiveSpanOnly(boolean traceWithActiveSpanOnly) {
66
81
return this ;
67
82
}
68
83
84
+ /**
85
+ * add tag
86
+ *
87
+ * @param key key
88
+ * @param value value
89
+ * @return this
90
+ */
91
+ public Builder extensionTag (String key , String value ) {
92
+ this .extensionTags .putIfAbsent (key , value );
93
+ return this ;
94
+ }
95
+
69
96
/**
70
97
* Customize the span name, default is operation name ({@link RedisSpanNameProvider#OPERATION_NAME})
71
98
*
@@ -94,7 +121,7 @@ public TracingConfiguration build() {
94
121
keysMaxLength = DEFAULT_KEYS_MAX_LENGTH ;
95
122
}
96
123
return new TracingConfiguration (tracer , traceWithActiveSpanOnly , keysMaxLength ,
97
- spanNameProvider );
124
+ spanNameProvider , extensionTags );
98
125
}
99
126
}
100
127
}
0 commit comments