Repository navigation
Conversation
Service Bus ignores SessionId unless the queue requires sessions, and this provider cannot receive from session-enabled queues, so GroupId cannot change delivery. Remove SupportsGroupId so the base queue logs that, and add a regression test. Also consume the queue-group-id nightly of Foundatio and Foundatio.TestHarness until a release is available.
A failed send after completing the original lost the message. The retry is now sent first, and gets a new MessageId when duplicate detection is on so it is not dropped as a duplicate. The worker loop now logs SDK timeouts and waits at least one second after a dequeue error. Adds the delayed-retry GroupId test.
Deletes the provider-specific StartWorkingImpl loop in favor of QueueBase.StartWorker (backoff on dequeue errors, cancellation-safe stop, safe abandon/auto-complete) and runs the shared worker fault-injection tests. Requires the Foundatio core change on feature/queue-worker-loop.
niemyjski
force-pushed
the
feature/queue-worker-loop
branch
from
October 8, 2026 22:01
408e05a to
12989e1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #103 (Queue GroupId). Hold for the next release. Depends on FoundatioFx/Foundatio#584. Stacked on
feature/queue-group-id; GitHub retargets it tomainonce #103 merges.What
Deletes this provider's copy of the
StartWorkingAsyncloop and calls the sharedQueueBase.StartWorker(...)fromStartWorkingImpl. The private_workerErrorCountfield is replaced byQueueBase.WorkerErrorCount/ResetWorkerErrorCount().The result: dequeue errors back off (1s doubling to 30s, with jitter) instead of retrying on a fixed interval or stopping the worker, abandon/auto-complete failures go through the resilience policy and don't stop the worker, and cancellation stops it without counting an error.
References the
13.0.5-preview.queue-worker-loop.0.19core and TestHarness preview packages. Switch back to the released package before merging.Risk
Behavior change only in worker error handling. Enqueue, dequeue, complete, abandon and dead-letter paths are unchanged.
Tests
Adds overrides for the new shared tests (
StartWorkingAsync_WhenDequeueThrows_KeepsWorkingAsync,StartWorkingAsync_WhenAbandonThrows_KeepsWorkingAsync,StartWorkingAsync_WhenCancelled_StopsWithoutWorkerErrorsAsync). The full suite passed twice locally against the emulator, and the worker tests passed 10 consecutive runs.