Skip to content

NimBus v4.3.0

Choose a tag to compare

@akakaule akakaule released this 05 Oct 13:02
· 68 commits to master since this release
2c13174

NimBus 4.3.0 adds custom date ranges to the Failed and Metrics pages, resilience helpers for adapters and a local NimBus stack that runs from nuget.org packages, and fixes endpoint filters matching other endpoints by prefix.

Highlights

  • Added a Custom date range to the Failed page time picker: presets stay one-click, and a local start and end time apply together and are kept in the URL.
  • Added a Custom period to the Metrics page, bucketed by minute, hour or day according to its span and limited to 90 days.
  • Added Retry-After support to retry policies: an exception implementing IRetryAfterHint makes the scheduled retry wait at least the server's hint, capped at MaxDelay, and AddExceptionRule<TException> matches rules on exception type instead of stack-trace text.
  • Added Akaule.NimBus.Extensions.Http with AddAzureBearerToken(scopes), a cached Microsoft Entra bearer-token handler for adapter HTTP clients.
  • Added a local NimBus stack from packages: Akaule.NimBus.AspireHosting runs the Resolver, WebApp and Service Bus emulator, which now also ship as the nimbus-resolver, nimbus-webapp and nimbus-sb-emulator dotnet tools.
  • Fixed EventFilter.EndPointId matching by prefix on SQL Server and in-memory, which let a Reader of one endpoint see another endpoint's events with a longer name, and let bulk skip and delete-by-status change the other endpoint's rows.
  • Fixed the Resolver dead-letter replay action being hidden when the topic name's casing differed, and restored the Failed page controls and side-panel navigation.
  • Fixed two npm security advisories and updated the WebApp's npm dependencies within their current majors.

Compatibility

EventFilter.EndPointId is now an exact, case-insensitive match on every provider; callers that relied on prefix matching must query each endpoint. Event id, session id and last message id filters stay prefix matches.

IMetricsStore adds (from, to) overloads of its five queries with default implementations that forward to the existing members, which are now [Obsolete] and will be removed in v5; the Cosmos DB, SQL Server and in-memory stores implement the new overloads. The /api/metrics endpoints take optional from and to query parameters and return 400 for an invalid custom window. IRetryPolicyProvider adds an exception overload with a default implementation.

Akaule.NimBus.ServiceDefaults is published for the first time, and its standard HTTP resilience handler is now opt-in through AddServiceDefaults(options => options.UseStandardResilienceHandler = true); hosts that copied ServiceDefaults from the repository and want the old behaviour must opt in. No schema migration, topology change or wire change.

This release was validated at commit 2c13174 with the full .NET Release build and 3,528 tests in CI (2 skipped), live Cosmos DB and SQL Server conformance suites with no skipped tests, and Service Bus emulator compatibility checks. The frontend production build and 552 frontend tests passed in a clean checkout of the release commit; no manual Azure or CRM/ERP end-to-end run was performed for this release.

PRs: #184, #191, #192, #193, #194, #195, #196, #197, #198, #199, #200, #201

Commits: v4.2.0...v4.3.0