Skip to content

v13.0.5

Latest

Choose a tag to compare

@niemyjski niemyjski released this 14 Oct 21:14

Foundatio v13.0.5

Feature and maintenance release building on v13.0.4.

Highlights

  • Queue GroupId — a provider-neutral tenant/group key for queue entries, with support for SQS fair queues and FIFO, and Azure Service Bus sessions
  • Configurable hosted job startup timeout — new StartupActionsTimeout option for jobs that wait for startup actions
  • Dependency updates across OpenTelemetry, MessagePack, Polly, Microsoft.Extensions, and xUnit
  • Documentation improvements for SQS, Service Bus, and local AWS emulation

Queues: GroupId (#579)

  • Added QueueEntryOptions.GroupId and IQueueEntry.GroupId so a message can carry a tenant or group key through any queue implementation
  • Added SharedQueueOptions.GroupIdResolver (and a GroupId(Func<T, string?>) builder method) to derive the group id from the message payload. An explicit GroupId on the entry options overrides the resolver
  • An empty GroupId is normalized to null, so an Enqueuing handler can no longer hand a provider an empty group id
  • EnqueueAsync now copies the caller's QueueEntryOptions before applying the resolver and trace context, so reusing an options instance no longer carries the previous message's CorrelationId/TraceState and handler edits no longer leak back to the caller
  • GroupId is preserved across abandon and retry, including delayed retries
  • Added shared QueueTestBase tests so every provider is verified against the same GroupId behavior

Note: GroupId is carried by the core abstractions. Whether it changes delivery behavior depends on the provider package. Upgrade the provider (SQS, Azure Service Bus, Redis, Azure Storage) to a release that supports it. Providers that don't support GroupId ignore it.

Hosting: Configurable Startup Timeout (#569)

  • Added HostedJobOptions.StartupActionsTimeout and the matching StartupActionsTimeout(TimeSpan?) builder method for jobs registered with AddJob
  • Applies when WaitForStartupActions is enabled. When unset, the default remains five minutes
  • Nonpositive durations time out immediately; infinite waits are not supported
services.AddJob<CleanupJob>(o => o
    .WaitForStartupActions()
    .StartupActionsTimeout(TimeSpan.FromMinutes(15)));

Documentation

  • Clarified SQS FIFO deduplication id selection, the queue deletion window, ContentBasedDeduplication being read once per queue, and dead-letter encryption, limits, and at-least-once behavior
  • Documented Service Bus session abandon ordering and delayed retries on duplicate-detection queues
  • Referenced Floci instead of LocalStack for local AWS emulation (#576)
  • Clarified JobResult retry vs. permanent failure semantics for queue jobs versus standalone jobs
  • Removed Minio references from the docs and README (repository archived)

Build & CI

  • CI package publishing is limited to main and version tags, and branch nightlies are published so provider PRs can consume a matching build
  • The Feedz publish feed is now configurable in the build workflow
  • Removed the explicit Microsoft.SourceLink.GitHub package reference
  • MinVer 7.0.0 → 8.0.0

Dependency Updates

  • OpenTelemetry exporter/hosting: 1.18.0 → 1.19.1; instrumentation (AspNetCore, Http, Runtime): 1.18.0 → 1.19.0
  • MessagePack: 3.1.8 → 3.1.12
  • Polly: 8.7.0 → 8.8.0
  • Microsoft.AspNetCore.DataProtection: 8.0.30 → 8.0.32
  • Microsoft.Extensions.Configuration.* / Microsoft.AspNetCore.TestHost: 10.0.11 → 10.0.13
  • Microsoft.Extensions.TimeProvider.Testing: 10.9.0 → 10.11.0
  • xUnit v4: xunit.v3.mtp-v2 / xunit.v3.assert / xunit.v3.extensibility.core 4.0.0 → 4.0.2, xunit.runner.visualstudio 4.0.0 → 4.0.1
  • Microsoft.NET.Test.Sdk: 18.9.0 → 18.11.0
  • Moq: 4.20.72 → 4.21.0 (tests)
  • Aspire.Hosting.Redis (sample): 13.5.3 → 13.6.1
  • Docs tooling: js-yaml 4.3.1 → 4.3.2 (#562)

Note for consumers: If you reference Foundatio.TestHarness, Foundatio.Xunit.v3, or other Foundatio test packages, keep them aligned with your xUnit packages (4.0.x).

Packages

This release publishes the usual Foundatio packages, including:

  • Foundatio
  • Foundatio.Extensions.Hosting
  • Foundatio.TestHarness
  • Foundatio.Xunit.v3
  • Foundatio.MessagePack
  • Foundatio.DataProtection

Install via NuGet:

dotnet add package Foundatio --version 13.0.5

Full Changelog

v13.0.4...v13.0.5