redb.Route.Sql
2.0.2
Prefix Reserved
dotnet add package redb.Route.Sql --version 2.0.2
NuGet\Install-Package redb.Route.Sql -Version 2.0.2
<PackageReference Include="redb.Route.Sql" Version="2.0.2" />
<PackageVersion Include="redb.Route.Sql" Version="2.0.2" />
<PackageReference Include="redb.Route.Sql" />
paket add redb.Route.Sql --version 2.0.2
#r "nuget: redb.Route.Sql, 2.0.2"
#:package redb.Route.Sql@2.0.2
#addin nuget:?package=redb.Route.Sql&version=2.0.2
#tool nuget:?package=redb.Route.Sql&version=2.0.2
redb.Route.Sql
SQL database transport for redb.Route. Pure ADO.NET polling consumer, query/batch producer, and stored procedure support. Provider-agnostic — works with PostgreSQL, SQL Server, SQLite, MySQL, and any DbConnection.
Installation
dotnet add package redb.Route.Sql
No additional dependencies — uses System.Data.Common abstractions only.
Usage
URI Format
sql://SELECT * FROM orders WHERE processed = 0?dataSource=main&delay=5000
Fluent DSL
using redb.Route.Sql.Fluent;
// Poll rows from database
From(Sql.Poll("SELECT * FROM orders WHERE processed = 0")
.DataSource("main")
.Delay(5000)
.OnSuccess("UPDATE orders SET processed = 1 WHERE id = :id")
.MaxMessagesPerPoll(100))
.Log("Processing order ${header.id}")
.To("direct://handle");
// Execute SQL (producer)
From("direct://save")
.To(Sql.Execute("INSERT INTO audit (message, status) VALUES (:body, 'OK')")
.DataSource("main")
.Transacted());
// Stored procedure
From("direct://calc")
.To(Sql.Procedure("sp_calculate_totals")
.DataSource("main")
.In("orderId", DbType.Int32)
.Out("total", DbType.Decimal));
// Batch processing
From("direct://bulk")
.To(Sql.Execute("INSERT INTO logs (message) VALUES (:body)")
.DataSource("main")
.Batch(500)
.Transacted());
// Explicit parameter binding — override auto-bind with constant or expression
From("direct://update-status")
.To(Sql.Execute("UPDATE orders SET status = :status WHERE id = :id")
.DataSource("main")
.Param("status", "completed")
.Param("id", Header("orderId")));
Register Data Sources
builder.Services.AddSingleton(sp =>
{
var registry = new SqlDataSourceRegistry();
registry.Register("main", () => new NpgsqlConnection(connectionString));
return registry;
});
Fluent Builder API
| Category | Methods |
|---|---|
| Connection | .DataSource(), .ConnectionString(), .Provider(), .CommandTimeout() |
| Transaction | .Transacted(), .WithIsolationLevel() |
| Output | .OutputType(), .OutputClass(), .OutputHeader(), .Noop() |
| Polling | .Delay(), .InitialDelay(), .FixedRate(), .RepeatCount(), .MaxMessagesPerPoll(), .RouteEmptyResultSet(), .SendEmptyMessageWhenIdle() |
| Lifecycle | .OnSuccess(sql), .OnFailure(sql), .OnBatchComplete(sql) |
| Batch | .Batch(size), .BreakBatchOnError() |
| Parameters | .Param(name, value), .Param(name, IExpression) — explicit bind for :name SQL params |
| Procedure | .In(), .Out(), .InOut(), .AsFunction() |
Most builder methods (DataSource, ConnectionString, CommandTimeout, OutputHeader, Delay, InitialDelay, RepeatCount, MaxMessagesPerPoll, Batch, Param) accept both constant values and
IExpressionfor runtime resolution.
Three Modes
| Mode | Entry Point | Use Case |
|---|---|---|
| Poll | Sql.Poll(query) |
Consumer — periodically query rows as messages |
| Execute | Sql.Execute(sql) |
Producer — execute INSERT/UPDATE/DELETE per message |
| Procedure | Sql.Procedure(name) |
Producer — call stored procedures with IN/OUT params |
Part of
redb.Route — ESB & EIP Framework for .NET
| 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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
- redb.Route (>= 2.0.2)
-
net8.0
- redb.Route (>= 2.0.2)
-
net9.0
- redb.Route (>= 2.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.