Fix MessageContext to support native scheduling for non-durable inline senders#1810
Merged
jeremydmiller merged 3 commits intoJasperFx:mainfrom Nov 5, 2025
Merged
Conversation
This was referenced Nov 6, 2025
This was referenced Mar 1, 2026
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.
Problem
Scheduled messages sent with "inline senders" (e.g., Azure Service Bus) supporting native scheduling are always scheduled in memory, causing messages to be lost after service restarts.
Cause
When scheduling messages (via
MessageContext.Schedule,MessageContext.SendwithDeliveryOptions, orTimeoutMessages),MessageContextcurrently checks only if the sender is durable. Inline senders like ASB are always marked as non-durable, so their scheduled messages are routed to local in-memory scheduling—even if the transport supports true native scheduled delivery.Solution
MessageContextto also check whether the transport supports native scheduled delivery.IsDurable, the code now checks bothIsDurableandSupportsNativeScheduledSend.SupportsNativeScheduledSendis true, scheduled messages are routed to the transport's native scheduling mechanism rather than to local in-memory scheduling.Testing
Azure Service Bus
Postgres
SQL Server