Shuttle.Esb
14.0.1
Prefix Reserved
See the version list below for details.
dotnet add package Shuttle.Esb --version 14.0.1
NuGet\Install-Package Shuttle.Esb -Version 14.0.1
<PackageReference Include="Shuttle.Esb" Version="14.0.1" />
paket add Shuttle.Esb --version 14.0.1
#r "nuget: Shuttle.Esb, 14.0.1"
// Install Shuttle.Esb as a Cake Addin #addin nuget:?package=Shuttle.Esb&version=14.0.1 // Install Shuttle.Esb as a Cake Tool #tool nuget:?package=Shuttle.Esb&version=14.0.1
Documentation
Please visit out official documentation for more information.
Getting Started
Start a new Console Application project. We'll need to install one of the support queue implementations. For this example we'll use Shuttle.Esb.AzureStorageQueues
which can be hosted locally using Azurite:
PM> Install-Package Shuttle.Esb.AzureStorageQueues
We'll also make use of the .NET generic host:
PM> Install-Package Microsoft.Extensions.Hosting
Next we'll implement our endpoint in order to start listening on our queue:
internal class Program
{
static async Task Main(string[] args)
{
await Host.CreateDefaultBuilder()
.ConfigureServices(services =>
{
services
.AddServiceBus(builder =>
{
builder.Options.Inbox.WorkQueueUri = "azuresq://azure/work";
builder.Options.Asynchronous = true; // NOTE: we'll be using async processing
})
.AddAzureStorageQueues(builder =>
{
builder.AddOptions("azure", new AzureStorageQueueOptions
{
ConnectionString = "UseDevelopmentStorage=true;"
});
});
})
.Build()
.RunAsync();
}
}
Even though the options may be set directly as above, typically one would make use of a configuration provider:
internal class Program
{
private static async Task Main(string[] args)
{
await Host.CreateDefaultBuilder()
.ConfigureServices(services =>
{
var configuration =
new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
services
.AddSingleton<IConfiguration>(configuration)
.AddServiceBus(builder =>
{
configuration
.GetSection(ServiceBusOptions.SectionName)
.Bind(builder.Options);
builder.Options.Asynchronous = true; // NOTE: we'll be using async processing
})
.AddAzureStorageQueues(builder =>
{
builder.AddOptions("azure", new AzureStorageQueueOptions
{
ConnectionString = configuration
.GetConnectionString("azure")
});
});
})
.Build()
.RunAsync();
}
}
The appsettings.json
file would be as follows (remember to set to Copy always
):
{
"ConnectionStrings": {
"azure": "UseDevelopmentStorage=true;"
},
"Shuttle": {
"ServiceBus": {
"Inbox": {
"WorkQueueUri": "azuresq://azure/work",
}
}
}
}
Send a command message for processing
await serviceBus.SendAsync(new RegisterMember
{
UserName = "user-name",
EMailAddress = "user@domain.com"
});
Publish an event message when something interesting happens
Before publishing an event one would need to register an ISubscrtiptionService
implementation such as Shuttle.Esb.Sql.Subscription.
await serviceBus.PublishAsync(new MemberRegistered
{
UserName = "user-name"
});
Subscribe to those interesting events
services.AddServiceBus(builder =>
{
builder.AddSubscription<MemberRegistered>();
});
Handle any messages
public class RegisterMemberHandler : IAsyncMessageHandler<RegisterMember>
{
public RegisterMemberHandler(IDependency dependency)
{
}
public async Task ProcessMessageAsync(IHandlerContext<RegisterMember> context)
{
// perform member registration
await context.PublishAsync(new MemberRegistered
{
UserName = context.Message.UserName
});
}
}
public class MemberRegisteredHandler : IAsyncMessageHandler<MemberRegistered>
{
public async Task ProcessMessageAsync(IHandlerContext<MemberRegistered> context)
{
// processing
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
- Microsoft.Extensions.Hosting (>= 7.0.1)
- Shuttle.Core.Compression (>= 12.0.1)
- Shuttle.Core.Contract (>= 11.1.0)
- Shuttle.Core.Encryption (>= 12.0.1)
- Shuttle.Core.Pipelines (>= 13.0.0)
- Shuttle.Core.PipelineTransaction (>= 13.0.0)
- Shuttle.Core.Reflection (>= 13.0.0)
- Shuttle.Core.Serialization (>= 11.0.0)
- Shuttle.Core.Specification (>= 11.0.0)
- Shuttle.Core.Streams (>= 10.3.0)
- Shuttle.Core.System (>= 11.1.0)
- Shuttle.Core.Threading (>= 13.0.0)
- Shuttle.Core.Transactions (>= 11.1.0)
NuGet packages (29)
Showing the top 5 NuGet packages that depend on Shuttle.Esb:
Package | Downloads |
---|---|
Shuttle.Esb.RabbitMQ
RabbitMQ implementation for use with Shuttle.Esb. |
|
Shuttle.Esb.Tests
Test fixtures to facilitate testing of components, such as queues, that relate to Shuttle.Esb. |
|
Shuttle.Esb.Process
Shuttle.Esb process management using Shuttle.Recall event sourcing. |
|
Shuttle.Esb.Msmq
MSMQ implementation for use with Shuttle.Esb. |
|
Shuttle.Esb.FileMQ
File-based queue implementation for use with Shuttle.Esb. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
15.0.0 | 1,116 | 8/5/2024 |
14.0.1 | 1,293 | 5/3/2024 |
14.0.0 | 705 | 4/30/2024 |
13.2.1 | 12,038 | 12/1/2022 |
13.2.0 | 9,459 | 9/16/2022 |
13.1.0 | 8,050 | 9/11/2022 |
13.0.0 | 7,961 | 9/4/2022 |
12.1.1 | 1,530 | 5/18/2022 |
12.1.0 | 1,352 | 5/18/2022 |
12.0.1 | 9,328 | 4/9/2022 |
12.0.0 | 8,461 | 3/21/2022 |
11.2.0 | 7,746 | 2/15/2021 |
11.1.1 | 1,541 | 2/9/2021 |
11.1.0 | 1,714 | 1/30/2021 |
11.0.3 | 12,223 | 1/17/2021 |
11.0.2 | 2,224 | 11/27/2020 |
11.0.1 | 19,118 | 7/31/2019 |
11.0.0 | 12,734 | 6/20/2019 |
10.1.8 | 2,821 | 12/26/2018 |
10.1.7 | 1,879 | 12/9/2018 |
10.1.6 | 38,624 | 10/15/2018 |
10.1.4 | 1,839 | 10/13/2018 |
10.1.2 | 4,041 | 10/6/2018 |
10.1.1 | 4,781 | 9/19/2018 |
10.1.0 | 2,323 | 9/17/2018 |
10.0.10 | 3,734 | 7/10/2018 |
10.0.9 | 2,184 | 7/8/2018 |
10.0.7 | 2,085 | 4/22/2018 |
10.0.6 | 2,856 | 4/12/2018 |
10.0.5 | 2,856 | 4/8/2018 |
10.0.3 | 8,476 | 2/13/2018 |
9.1.4 | 3,214 | 12/29/2017 |
9.1.3 | 2,105 | 10/22/2017 |
9.0.3 | 2,172 | 8/26/2017 |
9.0.2 | 3,633 | 8/6/2017 |
8.0.14 | 2,442 | 3/23/2018 |
8.0.13 | 4,642 | 12/29/2017 |
8.0.12 | 2,340 | 7/20/2017 |
8.0.11 | 2,139 | 7/17/2017 |
8.0.9 | 2,146 | 7/14/2017 |
8.0.8 | 2,745 | 7/6/2017 |
8.0.7 | 5,933 | 5/15/2017 |
8.0.5 | 2,394 | 5/7/2017 |
8.0.4 | 2,124 | 5/6/2017 |
8.0.3 | 2,374 | 5/6/2017 |
8.0.1 | 2,320 | 4/23/2017 |
8.0.0 | 8,098 | 3/24/2017 |
7.0.4 | 3,368 | 10/26/2016 |
7.0.3 | 2,906 | 10/4/2016 |
7.0.1 | 2,982 | 9/19/2016 |
7.0.0 | 2,314 | 9/4/2016 |
6.2.1 | 2,624 | 7/26/2016 |
6.2.0 | 2,925 | 7/23/2016 |
6.1.3 | 2,495 | 6/6/2016 |
6.1.2 | 2,224 | 6/4/2016 |
6.1.1 | 6,548 | 6/4/2016 |
6.1.0 | 2,815 | 6/4/2016 |
6.0.0 | 7,697 | 4/24/2016 |
5.1.9 | 5,375 | 4/3/2016 |
5.1.6 | 7,847 | 3/21/2016 |