Skip to content

Commit 92736f8

Browse files
Cloned Core_9
1 parent ce51854 commit 92736f8

File tree

6 files changed

+140
-0
lines changed

6 files changed

+140
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project Sdk="Microsoft.NET.Sdk.Worker">
2+
<PropertyGroup>
3+
<OutputType>Exe</OutputType>
4+
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
5+
<LangVersion>12.0</LangVersion>
6+
</PropertyGroup>
7+
<ItemGroup>
8+
<PackageReference Include="NServiceBus" Version="9.*" />
9+
<PackageReference Include="NServiceBus.Extensions.Hosting" Version="3.*" />
10+
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.*" />
11+
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.*" />
12+
</ItemGroup>
13+
</Project>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.Threading;
3+
using System.Threading.Tasks;
4+
using Microsoft.Extensions.Hosting;
5+
using NServiceBus;
6+
7+
class MessageGenerator(IMessageSession messageSession) : BackgroundService
8+
{
9+
protected override async Task ExecuteAsync(CancellationToken cancellationToken)
10+
{
11+
try
12+
{
13+
var number = 0;
14+
while (!cancellationToken.IsCancellationRequested)
15+
{
16+
await messageSession.SendLocal(new MyMessage { Number = number++ }, cancellationToken);
17+
18+
await Task.Delay(1000, cancellationToken);
19+
}
20+
}
21+
catch (OperationCanceledException)
22+
{
23+
// graceful shutdown
24+
}
25+
}
26+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
using NServiceBus;
2+
3+
public class MyMessage : ICommand
4+
{
5+
public int Number { get; set; }
6+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using System.Threading.Tasks;
2+
using Microsoft.Extensions.Logging;
3+
using NServiceBus;
4+
5+
public class MyMessageHandler(ILogger<MyMessageHandler> logger) : IHandleMessages<MyMessage>
6+
{
7+
public Task Handle(MyMessage message, IMessageHandlerContext context)
8+
{
9+
#region log-statement
10+
11+
logger.LogInformation("Received message #{Number}", message.Number);
12+
13+
#endregion
14+
15+
return Task.CompletedTask;
16+
}
17+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
using Microsoft.Extensions.Hosting;
3+
using Microsoft.Extensions.Logging;
4+
using NServiceBus;
5+
using OpenTelemetry.Logs;
6+
using OpenTelemetry.Resources;
7+
using OpenTelemetry.Trace;
8+
9+
var endpointName = "Samples.OpenTelemetry.MyEndpoint";
10+
11+
var builder = Host.CreateApplicationBuilder(args);
12+
13+
#region otel-config
14+
15+
builder.Services.AddOpenTelemetry()
16+
.ConfigureResource(resourceBuilder => resourceBuilder.AddService(endpointName))
17+
.WithTracing(traceBuilder =>
18+
{
19+
traceBuilder.AddSource("NServiceBus.*");
20+
traceBuilder.AddConsoleExporter();
21+
});
22+
23+
#endregion
24+
25+
#region otel-logging
26+
27+
builder.Logging.AddOpenTelemetry(loggingOptions =>
28+
{
29+
loggingOptions.IncludeFormattedMessage = true;
30+
loggingOptions.IncludeScopes = true;
31+
loggingOptions.ParseStateValues = true;
32+
loggingOptions.AddConsoleExporter();
33+
});
34+
35+
#endregion
36+
37+
#region otel-nsb-config
38+
39+
var endpointConfiguration = new EndpointConfiguration(endpointName);
40+
41+
endpointConfiguration.UseSerialization<SystemJsonSerializer>();
42+
endpointConfiguration.UseTransport(new LearningTransport());
43+
44+
endpointConfiguration.EnableOpenTelemetry();
45+
46+
builder.UseNServiceBus(endpointConfiguration);
47+
48+
#endregion
49+
50+
builder.Services.AddHostedService<MessageGenerator>();
51+
52+
var host = builder.Build();
53+
54+
await host.RunAsync();
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Microsoft Visual Studio Solution File, Format Version 12.00
2+
# Visual Studio Version 16
3+
VisualStudioVersion = 15.0.26124.0
4+
MinimumVisualStudioVersion = 15.0.26730.12
5+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenericHost", "GenericHost\GenericHost.csproj", "{374C998C-DE36-4F61-89AB-C11BF65633A2}"
6+
EndProject
7+
Global
8+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
9+
Debug|Any CPU = Debug|Any CPU
10+
Debug|x64 = Debug|x64
11+
Debug|x86 = Debug|x86
12+
EndGlobalSection
13+
GlobalSection(SolutionProperties) = preSolution
14+
HideSolutionNode = FALSE
15+
EndGlobalSection
16+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
17+
{374C998C-DE36-4F61-89AB-C11BF65633A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
18+
{374C998C-DE36-4F61-89AB-C11BF65633A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
19+
{374C998C-DE36-4F61-89AB-C11BF65633A2}.Debug|x64.ActiveCfg = Debug|Any CPU
20+
{374C998C-DE36-4F61-89AB-C11BF65633A2}.Debug|x64.Build.0 = Debug|Any CPU
21+
{374C998C-DE36-4F61-89AB-C11BF65633A2}.Debug|x86.ActiveCfg = Debug|Any CPU
22+
{374C998C-DE36-4F61-89AB-C11BF65633A2}.Debug|x86.Build.0 = Debug|Any CPU
23+
EndGlobalSection
24+
EndGlobal

0 commit comments

Comments
 (0)