Skip to content

Commit d0822fc

Browse files
Create Core_10 Sample
1 parent 24148b5 commit d0822fc

File tree

12 files changed

+266
-0
lines changed

12 files changed

+266
-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: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using NServiceBus;
4+
using Shared;
5+
6+
public class OrderConfirmationHandler : IHandleMessages<ConfirmOrderMessage>, IHandleMessages<DeclineOrderMessage>
7+
{
8+
public async Task Handle(ConfirmOrderMessage message, IMessageHandlerContext context)
9+
{
10+
await Task.Delay(25, context.CancellationToken);
11+
Console.WriteLine($"Order {message.OrderId} was confirmed.");
12+
}
13+
14+
public async Task Handle(DeclineOrderMessage message, IMessageHandlerContext context)
15+
{
16+
await Task.Delay(25, context.CancellationToken);
17+
Console.WriteLine($"Order {message.OrderId} was declined.");
18+
}
19+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
using NServiceBus;
2+
using OpenTelemetry;
3+
using OpenTelemetry.Resources;
4+
using OpenTelemetry.Trace;
5+
using Shared;
6+
using System;
7+
using System.Threading.Tasks;
8+
9+
class Program
10+
{
11+
const string EndpointName = "Samples.OpenTelemetry.Publisher";
12+
13+
public static async Task Main()
14+
{
15+
Console.Title = EndpointName;
16+
17+
#region jaeger-exporter-configuration
18+
var tracerProvider = Sdk.CreateTracerProviderBuilder()
19+
.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(EndpointName))
20+
.AddSource("NServiceBus.Core*")
21+
.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
22+
.Build();
23+
#endregion
24+
25+
#region jaeger-endpoint-configuration
26+
27+
var endpointConfiguration = new EndpointConfiguration(EndpointName);
28+
29+
endpointConfiguration.EnableOpenTelemetry();
30+
31+
#endregion
32+
33+
endpointConfiguration.UseSerialization<SystemJsonSerializer>();
34+
endpointConfiguration.UseTransport(new LearningTransport());
35+
36+
var endpointInstance = await Endpoint.Start(endpointConfiguration);
37+
38+
Console.WriteLine("Press '1' to publish the OrderReceived event");
39+
Console.WriteLine("Press any other key to exit");
40+
while (true)
41+
{
42+
var key = Console.ReadKey();
43+
Console.WriteLine();
44+
45+
var orderReceivedId = Guid.NewGuid();
46+
if (key.Key == ConsoleKey.D1)
47+
{
48+
var orderReceived = new OrderReceived
49+
{
50+
OrderId = orderReceivedId
51+
};
52+
await endpointInstance.Publish(orderReceived);
53+
Console.WriteLine($"Published OrderReceived Event with Id {orderReceivedId}.");
54+
}
55+
else
56+
{
57+
break;
58+
}
59+
}
60+
61+
await endpointInstance.Stop();
62+
tracerProvider.ForceFlush();
63+
}
64+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
6+
<LangVersion>12.0</LangVersion>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.*" />
11+
</ItemGroup>
12+
13+
<ItemGroup>
14+
<ProjectReference Include="..\Shared\Shared.csproj" />
15+
</ItemGroup>
16+
17+
</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: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
5+
<LangVersion>12.0</LangVersion>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<PackageReference Include="NServiceBus" Version="9.*" />
10+
</ItemGroup>
11+
12+
</Project>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System.Threading.Tasks;
2+
using NServiceBus;
3+
using Shared;
4+
5+
public class CustomerStatusHandler : IHandleMessages<OrderReceived>
6+
{
7+
public async Task Handle(OrderReceived message, IMessageHandlerContext context)
8+
{
9+
await Task.Delay(25, context.CancellationToken);
10+
}
11+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using NServiceBus;
4+
using Shared;
5+
6+
public class OrderValidationHandler : IHandleMessages<OrderReceived>
7+
{
8+
public async Task Handle(OrderReceived message, IMessageHandlerContext context)
9+
{
10+
await Task.Delay(50, context.CancellationToken);
11+
if (Random.Shared.NextDouble() >= 0.5)
12+
{
13+
Console.WriteLine($"Confirming order {message.OrderId}");
14+
await context.Reply(new ConfirmOrderMessage() { OrderId = message.OrderId });
15+
}
16+
else
17+
{
18+
Console.WriteLine($"Declining order {message.OrderId}");
19+
await context.Reply(new DeclineOrderMessage() { OrderId = message.OrderId });
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)