Repository navigation
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
StartupActionsTimeoutoption 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.GroupIdandIQueueEntry.GroupIdso a message can carry a tenant or group key through any queue implementation - Added
SharedQueueOptions.GroupIdResolver(and aGroupId(Func<T, string?>)builder method) to derive the group id from the message payload. An explicitGroupIdon the entry options overrides the resolver - An empty
GroupIdis normalized tonull, so anEnqueuinghandler can no longer hand a provider an empty group id EnqueueAsyncnow copies the caller'sQueueEntryOptionsbefore applying the resolver and trace context, so reusing an options instance no longer carries the previous message'sCorrelationId/TraceStateand handler edits no longer leak back to the callerGroupIdis preserved across abandon and retry, including delayed retries- Added shared
QueueTestBasetests so every provider is verified against the sameGroupIdbehavior
Note:
GroupIdis 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 supportGroupIdignore it.
Hosting: Configurable Startup Timeout (#569)
- Added
HostedJobOptions.StartupActionsTimeoutand the matchingStartupActionsTimeout(TimeSpan?)builder method for jobs registered withAddJob - Applies when
WaitForStartupActionsis 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,
ContentBasedDeduplicationbeing 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
JobResultretry 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
mainand 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.GitHubpackage reference MinVer7.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.12Polly: 8.7.0 → 8.8.0Microsoft.AspNetCore.DataProtection: 8.0.30 → 8.0.32Microsoft.Extensions.Configuration.*/Microsoft.AspNetCore.TestHost: 10.0.11 → 10.0.13Microsoft.Extensions.TimeProvider.Testing: 10.9.0 → 10.11.0- xUnit v4:
xunit.v3.mtp-v2/xunit.v3.assert/xunit.v3.extensibility.core4.0.0 → 4.0.2,xunit.runner.visualstudio4.0.0 → 4.0.1 Microsoft.NET.Test.Sdk: 18.9.0 → 18.11.0Moq: 4.20.72 → 4.21.0 (tests)Aspire.Hosting.Redis(sample): 13.5.3 → 13.6.1- Docs tooling:
js-yaml4.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:
FoundatioFoundatio.Extensions.HostingFoundatio.TestHarnessFoundatio.Xunit.v3Foundatio.MessagePackFoundatio.DataProtection
Install via NuGet:
dotnet add package Foundatio --version 13.0.5