Wolverine 6.52.0 adds named connections and timer agents
Wolverine 6.52.0 is a feature release adding connection-string-name registration for every transport and message store, timer agents for recurring schedules under 15 minutes, and groundwork for Wolverine 7.0. It also changes behavior: frequent schedules now run on timer agents, and unmappable outgoing envelopes are dead-lettered. Developers running Wolverine messaging should review these changes before upgrading.
Key points
- Transports and message stores accept connection-string names through new named-connection overloads.
- Recurring schedules under 15 minutes run on a timer agent; opt out per schedule with UseScheduledMessages().
- Unmappable outgoing envelopes on Azure Service Bus, SNS and Kafka are dead-lettered instead of reported as sent.
- MultipleHandlerBehavior.ClassicCombineIntoOneLogicalHandler is marked [Obsolete] but remains the default.
- The durable outbox groups stores and deletes per tenant database.
- DoThenRetry(action, maxAttempts) error policy works inline and from queues.
Wolverine 6.52.0 is a feature release that brings Aspire-style registration to messaging. Transports and message stores can now be configured by connection-string name, covering PostgreSQL, SQL Server, MySQL, SQLite and Oracle, with named static tenants and a Named Connection Strings table in describe output. Recurring schedules firing more often than every 15 minutes move onto a per-schedule timer agent, and you can opt a schedule out with UseScheduledMessages().
Some behavior changed in ways that matter for operations. Outgoing envelopes that Azure Service Bus, SNS or Kafka cannot map are now dead-lettered rather than reported as sent. The release also prepares the 6.x line for Wolverine 7.0's one-chain-per-handler model: the classic combined-handler mode is marked obsolete, a startup warning appears for combined handlers, and an opt-in assertion can fail the build on them. The durable outbox now handles each tenant database separately, so a slow tenant no longer stalls the others.
Real-world use
- An Aspire-hosted service that registers PostgreSQL or SQL Server message stores by connection-string name.
- A multi-tenant SaaS backend where one slow tenant database should not hold back outbound messages for other tenants.
- A background worker running sync or report jobs every few minutes on a dedicated timer agent.
Why it matters
Teams on Azure Service Bus, SNS or Kafka should expect unmappable messages to appear in dead-letter stores rather than disappear, and should check frequent schedules after upgrading. The new named-connection overloads also simplify configuration for Aspire-hosted apps.
Related stories
- Critter Stack in Review: message loss fixes, clean shutdown and multi-tenancyJasperFx (Critter Stack) Blog3 d ago
- CritterWatch 1.1 groups dead letters by failure cause and acts on each group at onceJasperFx (Critter Stack) Blog4 d ago
- Wolverine 6.51.3: durable inbox and outbox hardeningWolverine releasesOct 23