Beckett 0.6.0

dotnet add package Beckett --version 0.6.0
NuGet\Install-Package Beckett -Version 0.6.0
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.6.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Beckett --version 0.6.0
#r "nuget: Beckett, 0.6.0"
#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.6.0

// Install Beckett as a Cake Tool
#tool nuget:?package=Beckett&version=0.6.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 storage is provided out of the box, but Beckett is designed to compliment your existing event or message store and can be extended to support other storage mechanisms
  • 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
  • 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.ApplicationName = "todo-list-api";
    });

Or in your application settings files:

{
  "Beckett": {
    "ApplicationName": "todo-list-api"
  }
}

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

Beckett Dashboard

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.6.0 82 6/5/2024
0.0.40 82 5/30/2024
0.0.39 87 5/29/2024
0.0.38 75 5/29/2024
0.0.37 85 5/29/2024
0.0.36 69 5/29/2024
0.0.35 85 5/22/2024
0.0.34 80 5/22/2024
0.0.33 79 5/22/2024
0.0.32 83 5/20/2024
0.0.31 85 5/17/2024
0.0.30 77 5/16/2024
0.0.29 89 5/16/2024
0.0.28 78 5/16/2024
0.0.27 81 5/16/2024
0.0.26 73 5/16/2024
0.0.25 70 5/16/2024
0.0.24 77 5/15/2024
0.0.23 59 5/14/2024
0.0.22 68 5/11/2024
0.0.21 64 5/10/2024
0.0.20 66 5/10/2024
0.0.19 68 5/10/2024
0.0.18 72 5/8/2024
0.0.17 66 5/8/2024
0.0.16 71 5/8/2024