Beckett 0.8.5

There is a newer version of this package available.
See the version list below for details.
dotnet add package Beckett --version 0.8.5                
NuGet\Install-Package Beckett -Version 0.8.5                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Beckett" Version="0.8.5" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Beckett --version 0.8.5                
#r "nuget: Beckett, 0.8.5"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Beckett as a Cake Addin
#addin nuget:?package=Beckett&version=0.8.5

// Install Beckett as a Cake Tool
#tool nuget:?package=Beckett&version=0.8.5                

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
  • 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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 60 11/15/2024
0.13.0 84 11/8/2024
0.12.6 428 11/1/2024
0.12.5 120 10/31/2024
0.12.4 174 10/30/2024
0.12.3 110 10/29/2024
0.12.2 120 10/29/2024
0.12.1 186 10/28/2024
0.12.0 95 10/28/2024
0.11.12 124 10/25/2024
0.11.11 200 10/22/2024
0.11.10 329 10/18/2024
0.11.9 137 10/18/2024
0.11.8 143 10/18/2024
0.11.7 136 10/18/2024
0.11.6 157 10/17/2024
0.11.5 97 10/17/2024
0.11.4 91 10/17/2024
0.11.3 88 10/17/2024
0.11.2 224 10/13/2024
0.11.1 122 10/12/2024
0.11.0 124 10/11/2024
0.10.4 95 10/8/2024
0.10.3 104 10/7/2024
0.10.2 74 10/7/2024
0.10.1 75 10/7/2024
0.10.0 76 10/7/2024
0.9.17 1,722 9/14/2024
0.9.16 126 9/14/2024
0.9.15 209 9/13/2024
0.9.14 109 9/13/2024
0.9.13 284 9/7/2024
0.9.12 100 9/6/2024
0.9.11 266 9/5/2024
0.9.10 349 9/4/2024
0.9.9 394 8/29/2024
0.9.8 91 8/29/2024
0.9.7 226 8/28/2024
0.9.6 191 8/27/2024
0.9.5 98 8/27/2024
0.9.4 564 8/16/2024
0.9.3 582 8/14/2024
0.9.2 400 8/12/2024
0.9.1 262 8/8/2024
0.9.0 295 8/5/2024
0.8.13 59 8/2/2024
0.8.12 60 8/2/2024
0.8.11 431 7/26/2024
0.8.10 100 7/25/2024
0.8.9 100 7/25/2024
0.8.8 282 7/21/2024
0.8.7 138 7/19/2024
0.8.6 87 7/19/2024
0.8.5 182 7/16/2024
0.8.4 111 7/16/2024
0.8.3 101 7/16/2024
0.8.2 187 7/13/2024
0.8.1 97 7/13/2024
0.8.0 91 7/13/2024
0.7.9 112 7/12/2024
0.7.8 96 7/12/2024
0.7.7 112 7/11/2024
0.7.6 101 7/10/2024
0.7.5 92 7/10/2024
0.7.4 118 7/10/2024
0.7.3 102 7/10/2024
0.7.2 92 7/9/2024
0.7.1 99 7/9/2024
0.7.0 99 7/9/2024