Skip to content

Commit 117adba

Browse files
Merge pull request #7579 from Particular/samples-open-telemetry-jaeger-net10
Update Open-Telemetry Jaeger Sample to .NET 10
2 parents 7601a91 + 88d00aa commit 117adba

13 files changed

+255
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.2.32616.157
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Publisher", "Publisher\Publisher.csproj", "{FEE0814B-E0F3-413B-A27E-D86DFADB9C7C}"
7+
EndProject
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Subscriber", "Subscriber\Subscriber.csproj", "{626BA719-242A-4F6E-95C2-14EE1B51CB81}"
9+
EndProject
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{1658C460-F1FC-4772-BB61-6348205014C2}"
11+
EndProject
12+
Global
13+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
14+
Debug|Any CPU = Debug|Any CPU
15+
Release|Any CPU = Release|Any CPU
16+
EndGlobalSection
17+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
18+
{FEE0814B-E0F3-413B-A27E-D86DFADB9C7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19+
{FEE0814B-E0F3-413B-A27E-D86DFADB9C7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
20+
{FEE0814B-E0F3-413B-A27E-D86DFADB9C7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
21+
{FEE0814B-E0F3-413B-A27E-D86DFADB9C7C}.Release|Any CPU.Build.0 = Release|Any CPU
22+
{626BA719-242A-4F6E-95C2-14EE1B51CB81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23+
{626BA719-242A-4F6E-95C2-14EE1B51CB81}.Debug|Any CPU.Build.0 = Debug|Any CPU
24+
{626BA719-242A-4F6E-95C2-14EE1B51CB81}.Release|Any CPU.ActiveCfg = Release|Any CPU
25+
{626BA719-242A-4F6E-95C2-14EE1B51CB81}.Release|Any CPU.Build.0 = Release|Any CPU
26+
{1658C460-F1FC-4772-BB61-6348205014C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27+
{1658C460-F1FC-4772-BB61-6348205014C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
28+
{1658C460-F1FC-4772-BB61-6348205014C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
29+
{1658C460-F1FC-4772-BB61-6348205014C2}.Release|Any CPU.Build.0 = Release|Any CPU
30+
EndGlobalSection
31+
GlobalSection(SolutionProperties) = preSolution
32+
HideSolutionNode = FALSE
33+
EndGlobalSection
34+
GlobalSection(ExtensibilityGlobals) = postSolution
35+
SolutionGuid = {9A968F62-54A1-4A13-BBB4-1A353E3B0C62}
36+
EndGlobalSection
37+
EndGlobal
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using Shared;
2+
3+
public class OrderConfirmationHandler : IHandleMessages<ConfirmOrderMessage>, IHandleMessages<DeclineOrderMessage>
4+
{
5+
public async Task Handle(ConfirmOrderMessage message, IMessageHandlerContext context)
6+
{
7+
await Task.Delay(25, context.CancellationToken);
8+
Console.WriteLine($"Order {message.OrderId} was confirmed.");
9+
}
10+
11+
public async Task Handle(DeclineOrderMessage message, IMessageHandlerContext context)
12+
{
13+
await Task.Delay(25, context.CancellationToken);
14+
Console.WriteLine($"Order {message.OrderId} was declined.");
15+
}
16+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
using OpenTelemetry;
2+
using OpenTelemetry.Resources;
3+
using OpenTelemetry.Trace;
4+
using Shared;
5+
6+
class Program
7+
{
8+
const string EndpointName = "Samples.OpenTelemetry.Publisher";
9+
10+
public static async Task Main()
11+
{
12+
Console.Title = EndpointName;
13+
14+
#region jaeger-exporter-configuration
15+
var tracerProvider = Sdk.CreateTracerProviderBuilder()
16+
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(EndpointName))
17+
.AddSource("NServiceBus.Core*")
18+
.AddOtlpExporter() // The exporter defaults to gRPC on over port 4317 - https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/src/OpenTelemetry.Exporter.OpenTelemetryProtocol/README.md#otlpexporteroptions
19+
.Build();
20+
#endregion
21+
22+
#region jaeger-endpoint-configuration
23+
24+
var endpointConfiguration = new EndpointConfiguration(EndpointName);
25+
26+
endpointConfiguration.EnableOpenTelemetry();
27+
28+
#endregion
29+
30+
endpointConfiguration.UseSerialization<SystemJsonSerializer>();
31+
endpointConfiguration.UseTransport(new LearningTransport());
32+
33+
var endpointInstance = await Endpoint.Start(endpointConfiguration);
34+
35+
Console.WriteLine("Press '1' to publish the OrderReceived event");
36+
Console.WriteLine("Press any other key to exit");
37+
while (true)
38+
{
39+
var key = Console.ReadKey();
40+
Console.WriteLine();
41+
42+
var orderReceivedId = Guid.NewGuid();
43+
if (key.Key == ConsoleKey.D1)
44+
{
45+
var orderReceived = new OrderReceived
46+
{
47+
OrderId = orderReceivedId
48+
};
49+
await endpointInstance.Publish(orderReceived);
50+
Console.WriteLine($"Published OrderReceived Event with Id {orderReceivedId}.");
51+
}
52+
else
53+
{
54+
break;
55+
}
56+
}
57+
58+
await endpointInstance.Stop();
59+
tracerProvider.ForceFlush();
60+
}
61+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net10.0</TargetFramework>
6+
<LangVersion>preview</LangVersion>
7+
<ImplicitUsings>enable</ImplicitUsings>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.*" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<ProjectReference Include="..\Shared\Shared.csproj" />
16+
</ItemGroup>
17+
18+
</Project>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace Shared
2+
{
3+
using System;
4+
using NServiceBus;
5+
6+
public class ConfirmOrderMessage : IMessage
7+
{
8+
public Guid OrderId { get; set; }
9+
}
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace Shared
2+
{
3+
using System;
4+
using NServiceBus;
5+
6+
public class DeclineOrderMessage : IMessage
7+
{
8+
public Guid OrderId { get; set; }
9+
}
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace Shared
2+
{
3+
using System;
4+
using NServiceBus;
5+
6+
public class OrderReceived : IEvent
7+
{
8+
public Guid OrderId { get; set; }
9+
}
10+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net10.0</TargetFramework>
5+
<LangVersion>preview</LangVersion>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="NServiceBus" Version="10.0.0-alpha.1" />
11+
</ItemGroup>
12+
13+
</Project>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using Shared;
2+
3+
public class CustomerStatusHandler : IHandleMessages<OrderReceived>
4+
{
5+
public async Task Handle(OrderReceived message, IMessageHandlerContext context)
6+
{
7+
await Task.Delay(25, context.CancellationToken);
8+
}
9+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using Shared;
2+
3+
public class OrderValidationHandler : IHandleMessages<OrderReceived>
4+
{
5+
public async Task Handle(OrderReceived message, IMessageHandlerContext context)
6+
{
7+
await Task.Delay(50, context.CancellationToken);
8+
if (Random.Shared.NextDouble() >= 0.5)
9+
{
10+
Console.WriteLine($"Confirming order {message.OrderId}");
11+
await context.Reply(new ConfirmOrderMessage() { OrderId = message.OrderId });
12+
}
13+
else
14+
{
15+
Console.WriteLine($"Declining order {message.OrderId}");
16+
await context.Reply(new DeclineOrderMessage() { OrderId = message.OrderId });
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)