Skip to content

Update bridge simple sample to NServiceBus 10 #7517

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions samples/bridge/simple/Bridge_4/Bridge.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29728.190
MinimumVisualStudioVersion = 15.0.26730.12
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{5686FE6C-A5E3-40D1-A6BD-25F94DA612F8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LeftSender", "LeftSender\LeftSender.csproj", "{7036A49B-359F-4BC7-AFBA-DE3C7AB41986}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LeftReceiver", "LeftReceiver\LeftReceiver.csproj", "{6A699A4E-F2FD-4B71-AF73-199B499482BD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RightReceiver", "RightReceiver\RightReceiver.csproj", "{96028F4C-6B27-4CBE-95EB-A39F1EDCE045}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bridge", "Bridge\Bridge.csproj", "{355C998A-AAC0-4BAB-87B3-C5D34DE9C0B1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5686FE6C-A5E3-40D1-A6BD-25F94DA612F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5686FE6C-A5E3-40D1-A6BD-25F94DA612F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7036A49B-359F-4BC7-AFBA-DE3C7AB41986}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7036A49B-359F-4BC7-AFBA-DE3C7AB41986}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6A699A4E-F2FD-4B71-AF73-199B499482BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6A699A4E-F2FD-4B71-AF73-199B499482BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96028F4C-6B27-4CBE-95EB-A39F1EDCE045}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96028F4C-6B27-4CBE-95EB-A39F1EDCE045}.Debug|Any CPU.Build.0 = Debug|Any CPU
{355C998A-AAC0-4BAB-87B3-C5D34DE9C0B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{355C998A-AAC0-4BAB-87B3-C5D34DE9C0B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
19 changes: 19 additions & 0 deletions samples/bridge/simple/Bridge_4/Bridge/Bridge.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<OutputType>Exe</OutputType>
<LangVersion>preview</LangVersion>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.0-preview.5.25277.114" />
<PackageReference Include="NServiceBus" Version="10.0.0-alpha.1" />
<PackageReference Include="NServiceBus.MessagingBridge" Version="4.0.0-alpha.1" />
</ItemGroup>

</Project>
62 changes: 62 additions & 0 deletions samples/bridge/simple/Bridge_4/Bridge/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NServiceBus;

static class Program
{
static async Task Main()
{
Console.Title = "Bridge";

var builder = Host.CreateApplicationBuilder();
var bridgeConfiguration = new BridgeConfiguration();

#region endpoint-adding-simple

var learningLeft = new BridgeTransport(new LearningTransport());
learningLeft.HasEndpoint("Samples.Bridge.LeftSender");

#endregion

var learningTransport = new LearningTransport
{
// Set storage directory and add the character '2' to simulate a different transport.
StorageDirectory = $"{LearningTransportInfrastructure.FindStoragePath()}2"
};
var learningRight = new BridgeTransport(learningTransport)
{
// A different name is required if transports are used twice.
Name = "right-side"
};

#region endpoint-adding-register-publisher-by-string

var rightReceiver = new BridgeEndpoint("Samples.Bridge.RightReceiver");
rightReceiver.RegisterPublisher("OrderReceived", "Samples.Bridge.LeftSender");

#endregion
learningRight.HasEndpoint(rightReceiver);

#region add-transports-to-bridge

bridgeConfiguration.AddTransport(learningLeft);
bridgeConfiguration.AddTransport(learningRight);

#endregion

builder.Logging.ClearProviders();
builder.Logging.AddSimpleConsole(options =>
{
options.IncludeScopes = false;
options.SingleLine = true;
options.TimestampFormat = "hh:mm:ss ";
});

builder.UseNServiceBusBridge(bridgeConfiguration);

var host = builder.Build();
await host.RunAsync();
}
}
19 changes: 19 additions & 0 deletions samples/bridge/simple/Bridge_4/LeftReceiver/LeftReceiver.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<OutputType>Exe</OutputType>
<LangVersion>preview</LangVersion>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.0-preview.5.25277.114" />
<PackageReference Include="NServiceBus" Version="10.0.0-alpha.1" />
<PackageReference Include="NServiceBus.Extensions.Hosting" Version="4.0.0-alpha.1" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System.Threading.Tasks;
using NServiceBus;
using Microsoft.Extensions.Logging;

public class OrderReceivedHandler(ILogger<OrderReceivedHandler> logger) :
IHandleMessages<OrderReceived>
{
public Task Handle(OrderReceived message, IMessageHandlerContext context)
{
logger.LogInformation("Subscriber has received OrderReceived event with OrderId {OrderId}.", message.OrderId);
return Task.CompletedTask;
}
}
27 changes: 27 additions & 0 deletions samples/bridge/simple/Bridge_4/LeftReceiver/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using NServiceBus;

Console.Title = "LeftReceiver";

var builder = Host.CreateApplicationBuilder(args);

var endpointConfiguration = new EndpointConfiguration("Samples.Bridge.LeftReceiver");
endpointConfiguration.UsePersistence<LearningPersistence>();
endpointConfiguration.UseSerialization<SystemJsonSerializer>();
endpointConfiguration.UseTransport(new LearningTransport());

endpointConfiguration.Conventions().DefiningMessagesAs(t => t.Name == "OrderResponse");
endpointConfiguration.Conventions().DefiningEventsAs(t => t.Name == "OrderReceived");

endpointConfiguration.SendFailedMessagesTo("error");
endpointConfiguration.EnableInstallers();


Console.WriteLine("Press any key, the application is starting");
Console.ReadKey();
Console.WriteLine("Starting...");

builder.UseNServiceBus(endpointConfiguration);
await builder.Build().RunAsync();
16 changes: 16 additions & 0 deletions samples/bridge/simple/Bridge_4/LeftSender/LeftSender.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<OutputType>Exe</OutputType>
<LangVersion>preview</LangVersion>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="NServiceBus" Version="10.0.0-alpha.1" />
</ItemGroup>

</Project>
13 changes: 13 additions & 0 deletions samples/bridge/simple/Bridge_4/LeftSender/OrderResponseHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System;
using System.Threading.Tasks;
using NServiceBus;

public class OrderResponseHandler : IHandleMessages<OrderResponse>
{
public Task Handle(OrderResponse message, IMessageHandlerContext context)
{
Console.WriteLine($"OrderResponse Reply received with Id {message.OrderId}");

return Task.CompletedTask;
}
}
66 changes: 66 additions & 0 deletions samples/bridge/simple/Bridge_4/LeftSender/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
using System;
using System.Threading.Tasks;
using NServiceBus;

static class Program
{
static async Task Main()
{
Console.Title = "LeftSender";
var endpointConfiguration = new EndpointConfiguration("Samples.Bridge.LeftSender");
endpointConfiguration.UsePersistence<LearningPersistence>();

endpointConfiguration.Conventions().DefiningCommandsAs(t => t.Name == "PlaceOrder");
endpointConfiguration.Conventions().DefiningMessagesAs(t => t.Name == "OrderResponse");
endpointConfiguration.Conventions().DefiningEventsAs(t => t.Name == "OrderReceived");

endpointConfiguration.UseSerialization<SystemJsonSerializer>();
var routing = endpointConfiguration.UseTransport(new LearningTransport());
routing.RouteToEndpoint(typeof(PlaceOrder), "Samples.Bridge.RightReceiver");

endpointConfiguration.SendFailedMessagesTo("error");
endpointConfiguration.EnableInstallers();

var endpointInstance = await Endpoint.Start(endpointConfiguration);
await Start(endpointInstance);
await endpointInstance.Stop();
}

static async Task Start(IEndpointInstance endpointInstance)
{
Console.WriteLine("Press '1' to send the PlaceOrder command");
Console.WriteLine("Press '2' to publish the OrderReceived event");
Console.WriteLine("Press 'esc' other key to exit");

while (true)
{
var key = Console.ReadKey();
Console.WriteLine();

var orderId = Guid.NewGuid();
switch (key.Key)
{
case ConsoleKey.D1:
case ConsoleKey.NumPad1:
var placeOrder = new PlaceOrder
{
OrderId = orderId
};
await endpointInstance.Send(placeOrder);
Console.WriteLine($"Send PlaceOrder Command with Id {orderId}");
break;
case ConsoleKey.D2:
case ConsoleKey.NumPad2:
var orderReceived = new OrderReceived
{
OrderId = orderId
};
await endpointInstance.Publish(orderReceived);
Console.WriteLine($"Published OrderReceived Event with Id {orderId}.");
break;
case ConsoleKey.Escape:
return;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System.Threading.Tasks;
using NServiceBus;
using Microsoft.Extensions.Logging;

public class OrderReceivedHandler(ILogger<OrderReceivedHandler> logger) :
IHandleMessages<OrderReceived>
{
public Task Handle(OrderReceived message, IMessageHandlerContext context)
{
logger.LogInformation("Subscriber has received OrderReceived event with OrderId {OrderId}.", message.OrderId);
return Task.CompletedTask;
}
}
14 changes: 14 additions & 0 deletions samples/bridge/simple/Bridge_4/RightReceiver/PlaceOrderHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using NServiceBus;

public class PlaceOrderHandler(ILogger<PlaceOrderHandler> logger) : IHandleMessages<PlaceOrder>
{
public async Task Handle(PlaceOrder message, IMessageHandlerContext context)
{
logger.LogInformation("Received PlaceOrder Command with Id {OrderId}", message.OrderId);

await context.Reply(new OrderResponse { OrderId = message.OrderId });
}
}
38 changes: 38 additions & 0 deletions samples/bridge/simple/Bridge_4/RightReceiver/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using NServiceBus;

Console.Title = "RightReceiver";

var builder = Host.CreateApplicationBuilder(args);

var endpointConfiguration = new EndpointConfiguration("Samples.Bridge.RightReceiver");
endpointConfiguration.UsePersistence<LearningPersistence>();

endpointConfiguration.Conventions().DefiningCommandsAs(t => t.Name == "PlaceOrder");
endpointConfiguration.Conventions().DefiningMessagesAs(t => t.Name == "OrderResponse");
endpointConfiguration.Conventions().DefiningEventsAs(t => t.Name == "OrderReceived");

#region alternative-learning-transport
var learningTransportDefinition = new LearningTransport
{
// Set storage directory and add the character '2' to simulate a different transport.
StorageDirectory = $"{LearningTransportInfrastructure.FindStoragePath()}2"
};
endpointConfiguration.UseTransport(learningTransportDefinition);
#endregion

endpointConfiguration.UseSerialization<SystemJsonSerializer>();

endpointConfiguration.SendFailedMessagesTo("error");
endpointConfiguration.EnableInstallers();


Console.WriteLine("Press any key, the application is starting");
Console.ReadKey();
Console.WriteLine("Starting...");

builder.UseNServiceBus(endpointConfiguration);
await builder.Build().RunAsync();
19 changes: 19 additions & 0 deletions samples/bridge/simple/Bridge_4/RightReceiver/RightReceiver.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<OutputType>Exe</OutputType>
<LangVersion>preview</LangVersion>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.0-preview.5.25277.114" />
<PackageReference Include="NServiceBus" Version="10.0.0-alpha.1" />
<PackageReference Include="NServiceBus.Extensions.Hosting" Version="4.0.0-alpha.1" />
</ItemGroup>

</Project>
Loading