Skip to content

Commit a3d9c1c

Browse files
committed
Refactor
1 parent 13ed57d commit a3d9c1c

File tree

8 files changed

+63
-48
lines changed

8 files changed

+63
-48
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
~static OpenTelemetry.Trace.OpenTelemetryExtensions.AddRabbitMQInstrumentation(this OpenTelemetry.Trace.TracerProviderBuilder builder, System.Action<RabbitMQ.Client.RabbitMQOpenTelemetryOptions> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
1+
~static OpenTelemetry.Trace.OpenTelemetryExtensions.AddRabbitMQInstrumentation(this OpenTelemetry.Trace.TracerProviderBuilder builder, System.Action<RabbitMQ.Client.RabbitMQTracingOptions> configure) -> OpenTelemetry.Trace.TracerProviderBuilder

projects/RabbitMQ.Client.OpenTelemetry/TraceProviderBuilderExtensions.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@ namespace OpenTelemetry.Trace
1111

1212
public static class OpenTelemetryExtensions
1313
{
14-
public static TracerProviderBuilder AddRabbitMQInstrumentation(this TracerProviderBuilder builder, Action<RabbitMQOpenTelemetryOptions> configure)
14+
public static TracerProviderBuilder AddRabbitMQInstrumentation(this TracerProviderBuilder builder, Action<RabbitMQTracingOptions> configure)
1515
{
16-
var options = new RabbitMQOpenTelemetryOptions();
16+
var options = new RabbitMQTracingOptions();
1717
configure?.Invoke(options);
18-
RabbitMQActivitySource.LinkType = options.LinkType;
19-
RabbitMQActivitySource.UseRoutingKeyAsOperationName = options.UseRoutingKeyAsOperationName;
18+
RabbitMQActivitySource.TracingOptions = options;
2019

2120
RabbitMQActivitySource.ContextExtractor = OpenTelemetryContextExtractor;
2221
RabbitMQActivitySource.ContextInjector = OpenTelemetryContextInjector;

projects/RabbitMQ.Client/Impl/RabbitMQActivitySource.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,12 @@ public static class RabbitMQActivitySource
5151
public static Func<IReadOnlyBasicProperties, ActivityContext> ContextExtractor { get; set; } =
5252
DefaultContextExtractor;
5353

54-
public static bool UseRoutingKeyAsOperationName { get; set; } = true;
55-
public static OpenTelemetryLinkType LinkType { get; set; } = OpenTelemetryLinkType.AlwaysLink;
54+
public static bool UseRoutingKeyAsOperationName
55+
{
56+
get => TracingOptions.UseRoutingKeyAsOperationName;
57+
set => TracingOptions.UseRoutingKeyAsOperationName = value;
58+
}
59+
public static RabbitMQTracingOptions TracingOptions { get; set; } = new RabbitMQTracingOptions();
5660
internal static bool PublisherHasListeners => s_publisherSource.HasListeners();
5761

5862
internal static readonly IEnumerable<KeyValuePair<string, object?>> CreationTags = new[]
@@ -117,7 +121,7 @@ public static class RabbitMQActivitySource
117121

118122
// Extract the PropagationContext of the upstream parent from the message headers.
119123
ActivityContext linkedContext = ContextExtractor(readOnlyBasicProperties);
120-
ActivityContext parentContext = LinkType == OpenTelemetryLinkType.AlwaysParentChildAndLink
124+
ActivityContext parentContext = TracingOptions.LinkType == TracingLinkType.AlwaysParentChildAndLink
121125
? linkedContext : default;
122126

123127
Activity? activity = s_subscriberSource.StartLinkedRabbitMQActivity(
@@ -144,7 +148,7 @@ public static class RabbitMQActivitySource
144148

145149
// Extract the PropagationContext of the upstream parent from the message headers.
146150
ActivityContext linkedContext = ContextExtractor(readOnlyBasicProperties);
147-
ActivityContext parentContext = LinkType == OpenTelemetryLinkType.AlwaysParentChildAndLink
151+
ActivityContext parentContext = TracingOptions.LinkType == TracingLinkType.AlwaysParentChildAndLink
148152
? linkedContext : default;
149153

150154
Activity? activity = s_subscriberSource.StartLinkedRabbitMQActivity(

projects/RabbitMQ.Client/Impl/RabbitMQOpenTelemetryOptions.cs

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace RabbitMQ.Client
2+
{
3+
public enum TracingLinkType
4+
{
5+
AlwaysLink,
6+
AlwaysParentChildAndLink
7+
}
8+
9+
public class RabbitMQTracingOptions
10+
{
11+
public bool UseRoutingKeyAsOperationName { get; set; } = true;
12+
public TracingLinkType LinkType { get; set; } = TracingLinkType.AlwaysLink;
13+
}
14+
}
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
RabbitMQ.Client.OpenTelemetryLinkType
2-
RabbitMQ.Client.OpenTelemetryLinkType.AlwaysLink = 0 -> RabbitMQ.Client.OpenTelemetryLinkType
3-
RabbitMQ.Client.OpenTelemetryLinkType.AlwaysParentChildAndLink = 1 -> RabbitMQ.Client.OpenTelemetryLinkType
4-
RabbitMQ.Client.RabbitMQOpenTelemetryOptions
5-
RabbitMQ.Client.RabbitMQOpenTelemetryOptions.LinkType.get -> RabbitMQ.Client.OpenTelemetryLinkType
6-
RabbitMQ.Client.RabbitMQOpenTelemetryOptions.LinkType.set -> void
7-
RabbitMQ.Client.RabbitMQOpenTelemetryOptions.RabbitMQOpenTelemetryOptions() -> void
8-
RabbitMQ.Client.RabbitMQOpenTelemetryOptions.UseRoutingKeyAsOperationName.get -> bool
9-
RabbitMQ.Client.RabbitMQOpenTelemetryOptions.UseRoutingKeyAsOperationName.set -> void
10-
static RabbitMQ.Client.RabbitMQActivitySource.LinkType.get -> RabbitMQ.Client.OpenTelemetryLinkType
11-
static RabbitMQ.Client.RabbitMQActivitySource.LinkType.set -> void
1+
RabbitMQ.Client.RabbitMQTracingOptions
2+
RabbitMQ.Client.RabbitMQTracingOptions.LinkType.get -> RabbitMQ.Client.TracingLinkType
3+
RabbitMQ.Client.RabbitMQTracingOptions.LinkType.set -> void
4+
RabbitMQ.Client.RabbitMQTracingOptions.RabbitMQTracingOptions() -> void
5+
RabbitMQ.Client.RabbitMQTracingOptions.UseRoutingKeyAsOperationName.get -> bool
6+
RabbitMQ.Client.RabbitMQTracingOptions.UseRoutingKeyAsOperationName.set -> void
7+
RabbitMQ.Client.TracingLinkType
8+
RabbitMQ.Client.TracingLinkType.AlwaysLink = 0 -> RabbitMQ.Client.TracingLinkType
9+
RabbitMQ.Client.TracingLinkType.AlwaysParentChildAndLink = 1 -> RabbitMQ.Client.TracingLinkType
10+
static RabbitMQ.Client.RabbitMQActivitySource.TracingOptions.get -> RabbitMQ.Client.RabbitMQTracingOptions!
11+
static RabbitMQ.Client.RabbitMQActivitySource.TracingOptions.set -> void

projects/Test/SequentialIntegration/TestActivitySource.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ void AssertIntTagGreaterThanZero(Activity activity, string name)
8383
public async Task TestPublisherAndConsumerActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
8484
{
8585
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
86-
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
86+
RabbitMQActivitySource.TracingOptions.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
8787
var _activities = new List<Activity>();
8888
using ActivityListener activityListener = StartActivityListener(_activities);
8989
await Task.Delay(500);
@@ -120,7 +120,7 @@ public async Task TestPublisherAndConsumerActivityTags(bool useRoutingKeyAsOpera
120120
public async Task TestPublisherWithCachedStringsAndConsumerActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
121121
{
122122
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
123-
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
123+
RabbitMQActivitySource.TracingOptions.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
124124
var _activities = new List<Activity>();
125125
using ActivityListener activityListener = StartActivityListener(_activities);
126126
await Task.Delay(500);
@@ -159,7 +159,7 @@ public async Task TestPublisherWithCachedStringsAndConsumerActivityTags(bool use
159159
public async Task TestPublisherWithPublicationAddressAndConsumerActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
160160
{
161161
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
162-
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
162+
RabbitMQActivitySource.TracingOptions.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
163163
var _activities = new List<Activity>();
164164
using ActivityListener activityListener = StartActivityListener(_activities);
165165
await Task.Delay(500);
@@ -197,7 +197,7 @@ public async Task TestPublisherWithPublicationAddressAndConsumerActivityTags(boo
197197
public async Task TestPublisherAndConsumerActivityTagsAsync(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
198198
{
199199
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
200-
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
200+
RabbitMQActivitySource.TracingOptions.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
201201
var activities = new List<Activity>();
202202
using ActivityListener activityListener = StartActivityListener(activities);
203203
await Task.Delay(500);
@@ -235,7 +235,7 @@ public async Task TestPublisherAndConsumerActivityTagsAsync(bool useRoutingKeyAs
235235
public async Task TestPublisherWithCachedStringsAndConsumerActivityTagsAsync(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
236236
{
237237
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
238-
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
238+
RabbitMQActivitySource.TracingOptions.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
239239
var activities = new List<Activity>();
240240
using ActivityListener activityListener = StartActivityListener(activities);
241241
await Task.Delay(500);
@@ -275,7 +275,7 @@ public async Task TestPublisherWithCachedStringsAndConsumerActivityTagsAsync(boo
275275
public async Task TestPublisherWithPublicationAddressAndConsumerActivityTagsAsync(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
276276
{
277277
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
278-
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
278+
RabbitMQActivitySource.TracingOptions.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
279279
var activities = new List<Activity>();
280280
using ActivityListener activityListener = StartActivityListener(activities);
281281
await Task.Delay(500);
@@ -314,7 +314,7 @@ public async Task TestPublisherWithPublicationAddressAndConsumerActivityTagsAsyn
314314
public async Task TestPublisherAndBasicGetActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
315315
{
316316
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
317-
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
317+
RabbitMQActivitySource.TracingOptions.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
318318
var activities = new List<Activity>();
319319
using ActivityListener activityListener = StartActivityListener(activities);
320320
await Task.Delay(500);
@@ -348,7 +348,7 @@ public async Task TestPublisherAndBasicGetActivityTags(bool useRoutingKeyAsOpera
348348
public async Task TestPublisherWithCachedStringsAndBasicGetActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
349349
{
350350
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
351-
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
351+
RabbitMQActivitySource.TracingOptions.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
352352
var activities = new List<Activity>();
353353
using ActivityListener activityListener = StartActivityListener(activities);
354354
await Task.Delay(500);
@@ -384,7 +384,7 @@ public async Task TestPublisherWithCachedStringsAndBasicGetActivityTags(bool use
384384
public async Task TestPublisherWithPublicationAddressAndBasicGetActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
385385
{
386386
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
387-
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
387+
RabbitMQActivitySource.TracingOptions.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
388388
var activities = new List<Activity>();
389389
using ActivityListener activityListener = StartActivityListener(activities);
390390
await Task.Delay(500);

projects/Test/SequentialIntegration/TestOpenTelemetry.cs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,18 @@ void AssertIntTagGreaterThanZero(Activity activity, string name)
8282
Assert.True(activity.GetTagItem(name) is int result && result > 0);
8383
}
8484

85+
[Fact]
86+
public void TestDefaultTracingOptions()
87+
{
88+
using var tracer = Sdk.CreateTracerProviderBuilder()
89+
.AddRabbitMQInstrumentation()
90+
.Build();
91+
92+
Assert.True(RabbitMQActivitySource.UseRoutingKeyAsOperationName);
93+
Assert.True(RabbitMQActivitySource.TracingOptions.UseRoutingKeyAsOperationName);
94+
Assert.Equal(TracingLinkType.AlwaysLink, RabbitMQActivitySource.TracingOptions.LinkType);
95+
}
96+
8597
[Theory]
8698
[InlineData(true, true)]
8799
[InlineData(true, false)]
@@ -94,7 +106,7 @@ public async Task TestPublisherAndConsumerActivityTags(bool useRoutingKeyAsOpera
94106
.AddRabbitMQInstrumentation(options =>
95107
{
96108
options.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
97-
options.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
109+
options.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
98110
})
99111
.AddInMemoryExporter(exportedItems)
100112
.Build();
@@ -152,7 +164,7 @@ public async Task TestPublisherAndConsumerActivityTagsAsync(bool useRoutingKeyAs
152164
.AddRabbitMQInstrumentation(options =>
153165
{
154166
options.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
155-
options.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
167+
options.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
156168
})
157169
.AddInMemoryExporter(exportedItems)
158170
.Build();
@@ -211,7 +223,7 @@ public async Task TestPublisherWithPublicationAddressAndConsumerActivityTagsAsyn
211223
.AddRabbitMQInstrumentation(options =>
212224
{
213225
options.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
214-
options.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
226+
options.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
215227
})
216228
.AddInMemoryExporter(exportedItems)
217229
.Build();
@@ -271,7 +283,7 @@ public async Task TestPublisherWithCachedStringsAndConsumerActivityTagsAsync(boo
271283
.AddRabbitMQInstrumentation(options =>
272284
{
273285
options.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
274-
options.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
286+
options.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
275287
})
276288
.AddInMemoryExporter(exportedItems)
277289
.Build();
@@ -332,7 +344,7 @@ public async Task TestPublisherAndBasicGetActivityTags(bool useRoutingKeyAsOpera
332344
.AddRabbitMQInstrumentation(options =>
333345
{
334346
options.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
335-
options.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChildAndLink : OpenTelemetryLinkType.AlwaysLink;
347+
options.LinkType = useParentChildLinking ? TracingLinkType.AlwaysParentChildAndLink : TracingLinkType.AlwaysLink;
336348
})
337349
.AddInMemoryExporter(exportedItems)
338350
.Build();

0 commit comments

Comments
 (0)