Wolverine 6.51.3: durable inbox and outbox hardening
Wolverine 6.51.3 is a durability release that fixes a run of problems in the durable inbox and outbox. A new receiver compliance suite exercised PostgreSQL, SQL Server, Marten, EF Core, RabbitMQ and SQS, and the fixes cover transactions, deduplication, retries and dead lettering. There are no breaking API changes, and the one schema addition is optional.
Key points
- Every durable queue send now moves the outbox row atomically across PostgreSQL, SQL Server, MySQL, SQLite and Oracle.
- Dead letter writes are awaited, so a failed write is never reported as a dead letter.
- The deduplication table gains an optional nullable envelope_id column; migration is not required.
- RabbitMQ quorum queues can opt into x-delivery-limit via .DeliveryLimit(n) or DeliveryLimitForDurableQuorumQueues(n).
- There are no breaking API changes in this release.
This release follows a series of reports against Wolverine's durable inbox and outbox, along with issues found by a new receiver compliance suite that runs against PostgreSQL, SQL Server, Marten, EF Core, RabbitMQ and SQS. The fixes touch transaction lifetimes, idempotency placeholders, deduplication claims and how retries are kept after a handler reschedules itself.
For day-to-day users, the most visible changes are that every durable send now moves the outbox row atomically, dead letter writes are awaited so a failed write is never reported as success, and a disposed message store refuses dead letters instead of silently dropping them. RabbitMQ quorum queues gain an opt-in delivery limit. The only schema change is an optional nullable envelope_id column on the deduplication table, and tables without it keep working. Check the full release notes before upgrading if you run custom inbox stores.
Real-world use
- An order service on PostgreSQL or SQL Server that relies on Wolverine's transactional outbox and inbox.
- A background worker consuming RabbitMQ quorum queues that needs a cap on redelivery of poison messages.
- A multi-tenant system using EF Core with database-per-tenant that routes durable messages per tenant.
Why it matters
Teams relying on durable messaging get more reliable retries and dead lettering from these fixes. If you run a custom inbox store, review the optional envelope_id column and the transaction changes in the full notes before upgrading.
Related stories
- Rebuilding Marten Projections Without Downtime with Wolverine 6.51 Warm-up NodesJasperFx (Critter Stack) BlogOct 19
- Collection Return Types in C#: Interfaces, Views, and SnapshotsNick Cosentino (Dev Leader)2 d ago
- Idempotent NebulaGraph bulk ingestion from .NET using deterministic VIDsDEV Community: #csharp3 d ago