Skip to content

Commit d926247

Browse files
authored
Update bridge simple sample to NServiceBus 10 (#7517)
1 parent a97b7a1 commit d926247

19 files changed

+422
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.29728.190
5+
MinimumVisualStudioVersion = 15.0.26730.12
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{5686FE6C-A5E3-40D1-A6BD-25F94DA612F8}"
7+
EndProject
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LeftSender", "LeftSender\LeftSender.csproj", "{7036A49B-359F-4BC7-AFBA-DE3C7AB41986}"
9+
EndProject
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LeftReceiver", "LeftReceiver\LeftReceiver.csproj", "{6A699A4E-F2FD-4B71-AF73-199B499482BD}"
11+
EndProject
12+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RightReceiver", "RightReceiver\RightReceiver.csproj", "{96028F4C-6B27-4CBE-95EB-A39F1EDCE045}"
13+
EndProject
14+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bridge", "Bridge\Bridge.csproj", "{355C998A-AAC0-4BAB-87B3-C5D34DE9C0B1}"
15+
EndProject
16+
Global
17+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
18+
Debug|Any CPU = Debug|Any CPU
19+
EndGlobalSection
20+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
21+
{5686FE6C-A5E3-40D1-A6BD-25F94DA612F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
22+
{5686FE6C-A5E3-40D1-A6BD-25F94DA612F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
23+
{7036A49B-359F-4BC7-AFBA-DE3C7AB41986}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
24+
{7036A49B-359F-4BC7-AFBA-DE3C7AB41986}.Debug|Any CPU.Build.0 = Debug|Any CPU
25+
{6A699A4E-F2FD-4B71-AF73-199B499482BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26+
{6A699A4E-F2FD-4B71-AF73-199B499482BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
27+
{96028F4C-6B27-4CBE-95EB-A39F1EDCE045}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
28+
{96028F4C-6B27-4CBE-95EB-A39F1EDCE045}.Debug|Any CPU.Build.0 = Debug|Any CPU
29+
{355C998A-AAC0-4BAB-87B3-C5D34DE9C0B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30+
{355C998A-AAC0-4BAB-87B3-C5D34DE9C0B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
31+
EndGlobalSection
32+
GlobalSection(SolutionProperties) = preSolution
33+
HideSolutionNode = FALSE
34+
EndGlobalSection
35+
EndGlobal
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net10.0</TargetFramework>
5+
<OutputType>Exe</OutputType>
6+
<LangVersion>preview</LangVersion>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<ProjectReference Include="..\Shared\Shared.csproj" />
11+
</ItemGroup>
12+
13+
<ItemGroup>
14+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.0-preview.5.25277.114" />
15+
<PackageReference Include="NServiceBus" Version="10.0.0-alpha.1" />
16+
<PackageReference Include="NServiceBus.MessagingBridge" Version="4.0.0-alpha.1" />
17+
</ItemGroup>
18+
19+
</Project>
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Microsoft.Extensions.Hosting;
4+
using Microsoft.Extensions.Logging;
5+
using NServiceBus;
6+
7+
static class Program
8+
{
9+
static async Task Main()
10+
{
11+
Console.Title = "Bridge";
12+
13+
var builder = Host.CreateApplicationBuilder();
14+
var bridgeConfiguration = new BridgeConfiguration();
15+
16+
#region endpoint-adding-simple
17+
18+
var learningLeft = new BridgeTransport(new LearningTransport());
19+
learningLeft.HasEndpoint("Samples.Bridge.LeftSender");
20+
21+
#endregion
22+
23+
var learningTransport = new LearningTransport
24+
{
25+
// Set storage directory and add the character '2' to simulate a different transport.
26+
StorageDirectory = $"{LearningTransportInfrastructure.FindStoragePath()}2"
27+
};
28+
var learningRight = new BridgeTransport(learningTransport)
29+
{
30+
// A different name is required if transports are used twice.
31+
Name = "right-side"
32+
};
33+
34+
#region endpoint-adding-register-publisher-by-string
35+
36+
var rightReceiver = new BridgeEndpoint("Samples.Bridge.RightReceiver");
37+
rightReceiver.RegisterPublisher("OrderReceived", "Samples.Bridge.LeftSender");
38+
39+
#endregion
40+
learningRight.HasEndpoint(rightReceiver);
41+
42+
#region add-transports-to-bridge
43+
44+
bridgeConfiguration.AddTransport(learningLeft);
45+
bridgeConfiguration.AddTransport(learningRight);
46+
47+
#endregion
48+
49+
builder.Logging.ClearProviders();
50+
builder.Logging.AddSimpleConsole(options =>
51+
{
52+
options.IncludeScopes = false;
53+
options.SingleLine = true;
54+
options.TimestampFormat = "hh:mm:ss ";
55+
});
56+
57+
builder.UseNServiceBusBridge(bridgeConfiguration);
58+
59+
var host = builder.Build();
60+
await host.RunAsync();
61+
}
62+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net10.0</TargetFramework>
5+
<OutputType>Exe</OutputType>
6+
<LangVersion>preview</LangVersion>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<ProjectReference Include="..\Shared\Shared.csproj" />
11+
</ItemGroup>
12+
13+
<ItemGroup>
14+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.0-preview.5.25277.114" />
15+
<PackageReference Include="NServiceBus" Version="10.0.0-alpha.1" />
16+
<PackageReference Include="NServiceBus.Extensions.Hosting" Version="4.0.0-alpha.1" />
17+
</ItemGroup>
18+
19+
</Project>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System.Threading.Tasks;
2+
using NServiceBus;
3+
using Microsoft.Extensions.Logging;
4+
5+
public class OrderReceivedHandler(ILogger<OrderReceivedHandler> logger) :
6+
IHandleMessages<OrderReceived>
7+
{
8+
public Task Handle(OrderReceived message, IMessageHandlerContext context)
9+
{
10+
logger.LogInformation("Subscriber has received OrderReceived event with OrderId {OrderId}.", message.OrderId);
11+
return Task.CompletedTask;
12+
}
13+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Microsoft.Extensions.Hosting;
4+
using NServiceBus;
5+
6+
Console.Title = "LeftReceiver";
7+
8+
var builder = Host.CreateApplicationBuilder(args);
9+
10+
var endpointConfiguration = new EndpointConfiguration("Samples.Bridge.LeftReceiver");
11+
endpointConfiguration.UsePersistence<LearningPersistence>();
12+
endpointConfiguration.UseSerialization<SystemJsonSerializer>();
13+
endpointConfiguration.UseTransport(new LearningTransport());
14+
15+
endpointConfiguration.Conventions().DefiningMessagesAs(t => t.Name == "OrderResponse");
16+
endpointConfiguration.Conventions().DefiningEventsAs(t => t.Name == "OrderReceived");
17+
18+
endpointConfiguration.SendFailedMessagesTo("error");
19+
endpointConfiguration.EnableInstallers();
20+
21+
22+
Console.WriteLine("Press any key, the application is starting");
23+
Console.ReadKey();
24+
Console.WriteLine("Starting...");
25+
26+
builder.UseNServiceBus(endpointConfiguration);
27+
await builder.Build().RunAsync();
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>net10.0</TargetFramework>
4+
<OutputType>Exe</OutputType>
5+
<LangVersion>preview</LangVersion>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<ProjectReference Include="..\Shared\Shared.csproj" />
10+
</ItemGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="NServiceBus" Version="10.0.0-alpha.1" />
14+
</ItemGroup>
15+
16+
</Project>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using NServiceBus;
4+
5+
public class OrderResponseHandler : IHandleMessages<OrderResponse>
6+
{
7+
public Task Handle(OrderResponse message, IMessageHandlerContext context)
8+
{
9+
Console.WriteLine($"OrderResponse Reply received with Id {message.OrderId}");
10+
11+
return Task.CompletedTask;
12+
}
13+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using NServiceBus;
4+
5+
static class Program
6+
{
7+
static async Task Main()
8+
{
9+
Console.Title = "LeftSender";
10+
var endpointConfiguration = new EndpointConfiguration("Samples.Bridge.LeftSender");
11+
endpointConfiguration.UsePersistence<LearningPersistence>();
12+
13+
endpointConfiguration.Conventions().DefiningCommandsAs(t => t.Name == "PlaceOrder");
14+
endpointConfiguration.Conventions().DefiningMessagesAs(t => t.Name == "OrderResponse");
15+
endpointConfiguration.Conventions().DefiningEventsAs(t => t.Name == "OrderReceived");
16+
17+
endpointConfiguration.UseSerialization<SystemJsonSerializer>();
18+
var routing = endpointConfiguration.UseTransport(new LearningTransport());
19+
routing.RouteToEndpoint(typeof(PlaceOrder), "Samples.Bridge.RightReceiver");
20+
21+
endpointConfiguration.SendFailedMessagesTo("error");
22+
endpointConfiguration.EnableInstallers();
23+
24+
var endpointInstance = await Endpoint.Start(endpointConfiguration);
25+
await Start(endpointInstance);
26+
await endpointInstance.Stop();
27+
}
28+
29+
static async Task Start(IEndpointInstance endpointInstance)
30+
{
31+
Console.WriteLine("Press '1' to send the PlaceOrder command");
32+
Console.WriteLine("Press '2' to publish the OrderReceived event");
33+
Console.WriteLine("Press 'esc' other key to exit");
34+
35+
while (true)
36+
{
37+
var key = Console.ReadKey();
38+
Console.WriteLine();
39+
40+
var orderId = Guid.NewGuid();
41+
switch (key.Key)
42+
{
43+
case ConsoleKey.D1:
44+
case ConsoleKey.NumPad1:
45+
var placeOrder = new PlaceOrder
46+
{
47+
OrderId = orderId
48+
};
49+
await endpointInstance.Send(placeOrder);
50+
Console.WriteLine($"Send PlaceOrder Command with Id {orderId}");
51+
break;
52+
case ConsoleKey.D2:
53+
case ConsoleKey.NumPad2:
54+
var orderReceived = new OrderReceived
55+
{
56+
OrderId = orderId
57+
};
58+
await endpointInstance.Publish(orderReceived);
59+
Console.WriteLine($"Published OrderReceived Event with Id {orderId}.");
60+
break;
61+
case ConsoleKey.Escape:
62+
return;
63+
}
64+
}
65+
}
66+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System.Threading.Tasks;
2+
using NServiceBus;
3+
using Microsoft.Extensions.Logging;
4+
5+
public class OrderReceivedHandler(ILogger<OrderReceivedHandler> logger) :
6+
IHandleMessages<OrderReceived>
7+
{
8+
public Task Handle(OrderReceived message, IMessageHandlerContext context)
9+
{
10+
logger.LogInformation("Subscriber has received OrderReceived event with OrderId {OrderId}.", message.OrderId);
11+
return Task.CompletedTask;
12+
}
13+
}

0 commit comments

Comments
 (0)