Beckett 0.9.0
See the version list below for details.
dotnet add package Beckett --version 0.9.0
NuGet\Install-Package Beckett -Version 0.9.0
<PackageReference Include="Beckett" Version="0.9.0" />
paket add Beckett --version 0.9.0
#r "nuget: Beckett, 0.9.0"
// Install Beckett as a Cake Addin #addin nuget:?package=Beckett&version=0.9.0 // Install Beckett as a Cake Tool #tool nuget:?package=Beckett&version=0.9.0
Beckett
The missing pieces to build event-driven applications. Event sourcing is a powerful pattern for building applications but reading and writing events to an event store is only half of the equation. Beckett aims to fill in the gaps:
- Message Store - store messages (events, commands, jobs, etc...) in streams
- PostgreSQL message storage is provided out of the box, but Beckett is designed to compliment your existing
event or message store - use your own store and implement the
IMessageStorage
interface to integrate with Beckett
- PostgreSQL message storage is provided out of the box, but Beckett is designed to compliment your existing
event or message store - use your own store and implement the
- Subscriptions - subscribe to messages and process them in order by stream
- Horizontal scalability - use auto-scaling to have as many workers as needed processing messages in parallel where the work is distributed automatically across all available nodes without needing to manage the distribution by way of consumer groups or similar mechanisms
- Retries - built-in retry support for failed messages - since messages are processed by stream per subscription, a failed message only blocks a single stream for a subscription at a time and the rest of the streams can continue processing for that subscription
- Scheduled / recurring messages - schedule messages to be sent at a future time with cancellation support, or create a recurring schedule to send messages at a regular interval using cron expressions for scheduled jobs, etc...
- Open Telemetry - built-in support to provide tracing and metrics
- Dashboard - view metrics, browse messages, with future plans for subscription management, retrying failed messages, and more
Usage
After installing the Beckett
package from NuGet, you can add Beckett to your worker like so:
var builder = Host.CreateApplicationBuilder(args);
builder.AddBeckett();
var host = builder.Build();
host.Run();
Or an ASP.NET Core application along with the Beckett dashboard that is available in the Beckett.Dashboard
NuGet package:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapBeckettDashboard("/beckett");
app.Run();
In this example, the dashboard will be available at http://localhost:<port>/beckett
.
Also, since MapBeckettDashboard
returns a RouteGroupBuilder
instance you can further configure the route group as
needed to add authorization and so on using standard ASP.NET Core route group configuration methods.
Configuration
There are a number of options available in Beckett which can be configured inline:
builder.AddBeckett(
options =>
{
options.WithSubscriptions("TodoList");
});
Or in appsettings.json
:
{
"Beckett": {
"Subscriptions": {
"Enabled": true,
"GroupName": "TodoList"
}
}
}
Samples
This documentation is a work in progress - in the meantime take a look at the sample application to see all the features in action.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. |
-
net8.0
- Cronos (>= 0.8.4)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.1)
- Npgsql (>= 8.0.3)
- OpenTelemetry (>= 1.9.0)
- UUIDNext (>= 3.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Beckett:
Package | Downloads |
---|---|
Beckett.Dashboard
Messaging and event sourcing library |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.13.1 | 349 | 11/15/2024 |
0.13.0 | 91 | 11/8/2024 |
0.12.6 | 446 | 11/1/2024 |
0.12.5 | 125 | 10/31/2024 |
0.12.4 | 179 | 10/30/2024 |
0.12.3 | 115 | 10/29/2024 |
0.12.2 | 125 | 10/29/2024 |
0.12.1 | 341 | 10/28/2024 |
0.12.0 | 100 | 10/28/2024 |
0.11.12 | 129 | 10/25/2024 |
0.11.11 | 205 | 10/22/2024 |
0.11.10 | 334 | 10/18/2024 |
0.11.9 | 142 | 10/18/2024 |
0.11.8 | 148 | 10/18/2024 |
0.11.7 | 141 | 10/18/2024 |
0.11.6 | 162 | 10/17/2024 |
0.11.5 | 101 | 10/17/2024 |
0.11.4 | 95 | 10/17/2024 |
0.11.3 | 94 | 10/17/2024 |
0.11.2 | 229 | 10/13/2024 |
0.11.1 | 127 | 10/12/2024 |
0.11.0 | 129 | 10/11/2024 |
0.10.4 | 100 | 10/8/2024 |
0.10.3 | 109 | 10/7/2024 |
0.10.2 | 79 | 10/7/2024 |
0.10.1 | 80 | 10/7/2024 |
0.10.0 | 81 | 10/7/2024 |
0.9.17 | 1,725 | 9/14/2024 |
0.9.16 | 129 | 9/14/2024 |
0.9.15 | 212 | 9/13/2024 |
0.9.14 | 112 | 9/13/2024 |
0.9.13 | 287 | 9/7/2024 |
0.9.12 | 102 | 9/6/2024 |
0.9.11 | 268 | 9/5/2024 |
0.9.10 | 351 | 9/4/2024 |
0.9.9 | 396 | 8/29/2024 |
0.9.8 | 93 | 8/29/2024 |
0.9.7 | 228 | 8/28/2024 |
0.9.6 | 193 | 8/27/2024 |
0.9.5 | 100 | 8/27/2024 |
0.9.4 | 566 | 8/16/2024 |
0.9.3 | 584 | 8/14/2024 |
0.9.2 | 402 | 8/12/2024 |
0.9.1 | 264 | 8/8/2024 |
0.9.0 | 297 | 8/5/2024 |
0.8.13 | 61 | 8/2/2024 |
0.8.12 | 62 | 8/2/2024 |
0.8.11 | 433 | 7/26/2024 |
0.8.10 | 102 | 7/25/2024 |
0.8.9 | 102 | 7/25/2024 |
0.8.8 | 284 | 7/21/2024 |
0.8.7 | 140 | 7/19/2024 |
0.8.6 | 89 | 7/19/2024 |
0.8.5 | 184 | 7/16/2024 |
0.8.4 | 113 | 7/16/2024 |
0.8.3 | 103 | 7/16/2024 |
0.8.2 | 189 | 7/13/2024 |
0.8.1 | 100 | 7/13/2024 |
0.8.0 | 94 | 7/13/2024 |
0.7.9 | 115 | 7/12/2024 |
0.7.8 | 99 | 7/12/2024 |
0.7.7 | 115 | 7/11/2024 |
0.7.6 | 103 | 7/10/2024 |
0.7.5 | 94 | 7/10/2024 |
0.7.4 | 120 | 7/10/2024 |
0.7.3 | 104 | 7/10/2024 |
0.7.2 | 94 | 7/9/2024 |
0.7.1 | 101 | 7/9/2024 |
0.7.0 | 101 | 7/9/2024 |