OrionGuard.Outbox.PostgresNotify
6.5.13
dotnet add package OrionGuard.Outbox.PostgresNotify --version 6.5.13
NuGet\Install-Package OrionGuard.Outbox.PostgresNotify -Version 6.5.13
<PackageReference Include="OrionGuard.Outbox.PostgresNotify" Version="6.5.13" />
<PackageVersion Include="OrionGuard.Outbox.PostgresNotify" Version="6.5.13" />
<PackageReference Include="OrionGuard.Outbox.PostgresNotify" />
paket add OrionGuard.Outbox.PostgresNotify --version 6.5.13
#r "nuget: OrionGuard.Outbox.PostgresNotify, 6.5.13"
#:package OrionGuard.Outbox.PostgresNotify@6.5.13
#addin nuget:?package=OrionGuard.Outbox.PostgresNotify&version=6.5.13
#tool nuget:?package=OrionGuard.Outbox.PostgresNotify&version=6.5.13
OrionGuard.Outbox.PostgresNotify
Postgres LISTEN/NOTIFY backed IOutboxWakeSignal for OrionGuard.EntityFrameworkCore. Replaces the v6.5.1 polling-only fallback with an event-driven wake on every committed outbox row when the consumer's database is PostgreSQL.
Install
dotnet add package OrionGuard.Outbox.PostgresNotify
Wire-up
services.AddPostgresNotifyOutboxWakeSignal(o =>
{
o.ConnectionString = "Host=localhost;Database=app;Username=app;Password=app";
});
services.AddOrionGuardEfCore<AppDbContext>(opts => opts.UseOutbox());
The hosted service opens a dedicated Npgsql connection, runs LISTEN "orionguard_outbox";, and signals the dispatcher on every notification. The dispatcher's polling interval upper-bounds wake latency, so an unreachable LISTEN connection degrades to polling rather than dispatch starvation.
Trigger installation
This package does NOT auto-install the database trigger. Run the SQL once via a migration:
public partial class InstallOrionGuardOutboxNotify : Migration
{
protected override void Up(MigrationBuilder mb) =>
mb.Sql(PostgresNotifyTriggerSql.Create());
protected override void Down(MigrationBuilder mb) =>
mb.Sql(PostgresNotifyTriggerSql.Drop());
}
PostgresNotifyTriggerSql.Create(tableName, channelName) accepts overrides if you use a custom OutboxOptions.TableName.
| 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
- Npgsql (>= 8.0.5)
- OrionGuard.EntityFrameworkCore (>= 6.5.13)
-
net8.0
- Npgsql (>= 8.0.5)
- OrionGuard.EntityFrameworkCore (>= 6.5.13)
-
net9.0
- Npgsql (>= 8.0.5)
- OrionGuard.EntityFrameworkCore (>= 6.5.13)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.