GH-3708: document NativeAck in the RabbitMQ and partitioning guides - #4054
Merged
Conversation
#4040 documented the mode in listeners.md -- the settings matrix column and the mode's own section. Two other pages talk about exactly the trade-off this mode changes and did not know it existed. * RabbitMQ performance guide: NativeAck joins "Choosing the endpoint mode", and the prefetch section explains that for this mode the prefetch window IS the back pressure and is also the bound on how many deliveries a dying node hands back -- so raising it trades throughput for redelivery. * Partitioning guide: a tip on "Partitioned Processing at any Endpoint" laying out what each mode costs for partitioned work -- Durable pays the database, Buffered acks before the handler and loses on crash, NativeAck pays neither, and Inline cannot do it at all and now throws rather than ignoring it. Says plainly that no non-durable mode promises original delivery order under failure. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Docs-only follow-up to #4040.
#4040 documents
EndpointMode.NativeAckinlisteners.md— the settings-matrix column and the mode's own section. Two other pages discuss exactly the trade-off this mode changes and did not know it existed.RabbitMQ performance guide.
NativeAckjoins "Choosing the endpoint mode", positioned as what to reach for when Inline is too slow because it is single-threaded per listener and Durable is too expensive under a flood. The prefetch section gains the mode's sizing rule and, more usefully, the consequence: for a NativeAck endpoint the prefetch window is the back pressure — nothing is acked until a handler succeeds, so the broker stops delivering at the unacked ceiling — and it is simultaneously the bound on how many deliveries a dying node hands back. Raising it trades smoother throughput for more redelivery after a crash or rolling deploy. That is a real dial with two opposed effects and it should be documented as one.Partitioning guide. A tip on "Partitioned Processing at any Endpoint" spelling out what each mode actually costs for partitioned work, since that page previously implied the choice was free: Durable pays an inbox insert plus a mark-as-handled update per message; BufferedInMemory removes the database cost but acks before the handler runs, so a node dying mid-flight loses what was buffered;
ProcessInParallelWithNativeAcks()pays neither; andProcessInline()cannot do it at all and now throws at startup rather than silently ignoringPartitionProcessingByGroupId()(GH-3712).It also repeats the ordering guarantee in the place where someone configuring partitioning will actually read it: messages sharing a group id never execute concurrently, but strict processing in original delivery order is not promised under failure or redelivery in any non-durable mode.
Ordering
No file overlap with #4040 — that PR touches
listeners.md, this touchespartitioning.mdandrabbitmq/performance.md. The only dependency is a cross-reference: both new sections link to/guide/messaging/listeners#native-ack-endpoints, which #4040 creates. Merge #4040 first or those two anchors dangle.🤖 Generated with Claude Code