Bios.Outbox 0.1.0
Bios.Outbox
PostgreSQL uzerinde transactional outbox: is, cagiranin KENDI transaction'inda
kuyruklanir; surekli bir isci FOR UPDATE SKIP LOCKED ile sinirli bir havuz
altinda bosaltir. Biten is SILINIR; tukenen is dead olur; her deneme ustel
geri cekilmeyle yeniden zamanlanir.
Tablo
Kutuphane su tabloyu bekler (gocunuze ekleyin):
create table outbox_jobs (
id bigint generated always as identity primary key,
queue text not null,
kind text not null,
payload jsonb not null default '{}',
status text not null default 'queued'
check (status in ('queued', 'running', 'dead')),
attempts int not null default 0,
run_after timestamptz not null default now(),
created_at timestamptz not null default now(),
started_at timestamptz,
last_error text
);
create index outbox_jobs_ready_idx
on outbox_jobs (queue, run_after, id) where status = 'queued';
Rol ayrimi kullanan bir sistemde: kuyruklayan role select, insert,
isci rolune select, update, delete.
Kullanim
services.AddOutbox(connectionString); // isci tarafi: NpgsqlDataSource
services.AddOutboxHandler<MyJobHandler>(); // kind -> handler
services.AddOutboxQueue("transfer", concurrency: 50);
Kuyruklama, cagiranin transaction'ina katilir -- ayrintilar icin
IOutbox.EnqueueAsync belgelerine bakin.
No packages depend on Bios.Outbox.
.NET 10.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Npgsql (>= 10.0.3)
| Version | Downloads | Last updated |
|---|---|---|
| 0.1.0 | 2 | 08/29/2026 |