Flowly 1.0.1
dotnet add package Flowly --version 1.0.1
NuGet\Install-Package Flowly -Version 1.0.1
<PackageReference Include="Flowly" Version="1.0.1" />
<PackageVersion Include="Flowly" Version="1.0.1" />
<PackageReference Include="Flowly" />
paket add Flowly --version 1.0.1
#r "nuget: Flowly, 1.0.1"
#:package Flowly@1.0.1
#addin nuget:?package=Flowly&version=1.0.1
#tool nuget:?package=Flowly&version=1.0.1
Flowly
Transport-agnostic queue-based messaging abstraction for .NET. Flowly gives you a clean, convention-driven API for message handling, job tracking, retries, dead letter management, and recurring scheduled work — without tying your application code to a specific broker.
Quick Start
1. Define a message
// Queue name auto-generated: "order-created"
public record OrderCreated(Guid OrderId, decimal Total);
2. Write a handler
public class OrderCreatedHandler : MessageHandlerBase<OrderCreated>
{
public override async Task Handle(IMessageContext<OrderCreated> ctx)
{
await ProcessOrder(ctx.Message, ctx.CancellationToken);
}
}
3. Configure and register
// Program.cs
builder.AddFlowly(configure => configure
.UseAzureServiceBus("AzureServiceBus")
.AddMessageHandler<OrderCreated, OrderCreatedHandler>()
.AddMessageSubmitter<OrderCreated>());
4. Send a message
public class OrderService(IMessageSender sender)
{
public Task PlaceOrder(Order order, CancellationToken ct)
=> sender.Send(new OrderCreated(order.Id, order.Total), ct);
}
Key Features
| Feature | Description |
|---|---|
| Convention-driven naming | Queue names derived from type names (PascalCase → kebab-case); override with [QueueName] |
| Retry policy | [RetryPolicy(maxRetries: 3, delaySeconds: 30)] on any handler |
| Dead letter tracking | Persistent dead letter store with requeue support (Flowly.DeadLetters.*) |
| Job tracking | Long-running work with status tracking in SQL Server or PostgreSQL (Flowly.Jobs.*) |
| Recurring jobs | CRON-based scheduling with single-execution guarantee |
| Events (fan-out) | Publish to multiple independent subscribers via EventHandlerBase<T> |
| OpenTelemetry | Metrics and traces via Flowly.OpenTelemetry |
Packages
| Package | Purpose |
|---|---|
Flowly.AzureServiceBus |
Azure Service Bus transport |
Flowly.RabbitMQ |
RabbitMQ transport |
Flowly.Jobs + Flowly.Jobs.SqlServer / .Postgres |
Job state tracking |
Flowly.DeadLetters + Flowly.DeadLetters.SqlServer / .Postgres |
Dead letter tracking |
Flowly.OpenTelemetry |
OpenTelemetry instrumentation |
Flowly.AzureServiceBus.Aspire |
.NET Aspire AppHost integration |
Flowly.Tool |
flowly CLI for queue discovery and code generation |
Documentation
Full user guide, quickstarts, and configuration reference: https://rasmustherkelsen.github.io/flowly/
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Cronos (>= 0.13.0)
- Microsoft.Extensions.Configuration (>= 10.0.7)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.7)
- Microsoft.Extensions.Configuration.Json (>= 10.0.7)
- Microsoft.Extensions.DependencyInjection (>= 10.0.7)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.7)
- System.CommandLine (>= 2.0.7)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Flowly:
| Package | Downloads |
|---|---|
|
Flowly.DeadLetters
Dead letter tracking core for Flowly. Deadletter tracking requires an underlying database so take your dependency on Flowly.DeadLetters.X where X is your database abstraction. |
|
|
Flowly.AzureServiceBus
Azure Service Bus transport for Flowly. |
|
|
Flowly.OpenTelemetry
OpenTelemetry metrics and traces integration for Flowly. |
|
|
Flowly.AzureServiceBus.Aspire
Aspire AppHost integration for Flowly Azure Service Bus. |
|
|
Flowly.RabbitMQ
RabbitMQ transport for Flowly. |
GitHub repositories
This package is not used by any popular GitHub repositories.