Skip to content

docs: explain RabbitMQ delivery safety and adoption requirements - #574

Draft
niemyjski wants to merge 25 commits into
mainfrom
docs/rabbitmq-4.2.5-delivery-contracts
Draft

niemyjski wants to merge 25 commits into
mainfrom
docs/rabbitmq-4.2.5-delivery-contracts

Conversation

@niemyjski

@niemyjski niemyjski commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

Documents RabbitMQ delivery safety, TLS setup, quorum adoption, and priority changes across broker versions.

Adoption: Remove quorum MaxPriority/UseMessagePriority() settings and configure queue arguments before constructing the bus. Automatic exhaustion now retains work without a terminal destination; plan quarantine, capacity, finite prefetch, and repair. Strict dispatch requires Automatic acknowledgement, a typed terminal exchange, and discard disabled. FireAndForget remains the default. Strict TLS validation can reject existing configurations.

Release dependency: TLS #103 is merged. Publish with the matching provider release after #106 → #104 → #105 → #100.

Priority upgrade: Quorum 4.3 changes queued ordering, omitted/zero priority defaults, and lower-priority fairness. The dedicated 4.3.6 broker verifies priority scenarios only.

Validation: Docs build, 300 local links/anchors, eleven provider URLs, seven compiled examples, and thirteen configuration checks passed against ed8606b. Both docs builds and all eleven provider builds passed. #104/#105/#100 each retain five expected version skips; #106 retains 122 infrastructure skips.

Verification and implementation details
Provider PR Base/status Reviewed revision Build checks
#103 Merged into main 6d9516a493e99e97a1d24ee3357bc1e127371e9d PR: passed; push: passed
#106 main ae09eef6bd247633ae15545e6b1f4d4e61816dad PR: passed; push: passed
#104 feature/rabbitmq-quorum-priority 0fc7840360a4ce2c52e6ec710f7b10aa4cda4e26 PR 1: passed; PR 2: passed; push: passed
#105 feature/rabbitmq-broker-verification 1528a24b32d3935752645d86340aa451e291647a PR 1: passed; PR 2: passed; push: passed
#100 feature/rabbitmq-delivery-recovery ed8606b7182cde37b664e5fe4ab5a7e81e46be17 PR 1: passed; PR 2: passed; push: passed
  • All guide source links pin aggregate ed8606b7182cde37b664e5fe4ab5a7e81e46be17. This pass adds behavior tests and an owned priority broker in the provider, plus README guidance; no library runtime logic changes. The docs PR changes seven documentation, navigation, and skill paths overall.
  • The main, TLS, chaos, and delayed-plugin broker baselines remain 4.2.5; the plugin artifact remains 4.2.0. RabbitMqPriorityBehaviorTests runs nine cases on 4.2.5. RabbitMqPriority43BehaviorTests runs those nine on 4.3.6 plus a major/minor fixture-version assertion: nineteen added CI cases. The 3.13.7 run is a local comparison. This is not full-provider compatibility coverage for 3.13 or 4.3.
  • The new, separately named cases cover confirmed unroutable publication before subscription, inability to preempt an in-flight delivery, queued priorities 5/10, omitted/zero versus explicit 1, and quorum fairness. They use the bus API and shared cleanup. Quorum uses FIFO on 3.13, normal/high groups on 4.2, and strict numeric ordering on 4.3. RabbitMQ.Client 7.2.2 omits zero; on quorum 4.3 that uses default priority 4. The finite-backlog fairness assertion is distinct from the broker documentation's sustained-starvation warning. The guide links the official version-specific rules.
  • Provider local matrix logs were inspected: nine cases passed with zero skips/failures on each of 3.13.7, 4.2.5, and 4.3.6 at both netstandard1.5 for Foundatio.Logging.Serilog #106 ae09eef6bd247633ae15545e6b1f4d4e61816dad and aggregate ed8606b7182cde37b664e5fe4ab5a7e81e46be17. These priority scenarios do not verify native delayed retries, consumer timeouts, TLS on 4.3, or full delivery/recovery behavior on 4.3. The local and CI matrix uses fresh brokers and newly configured queues; it does not exercise in-place or rolling upgrades that retain existing queue data.
  • Original-test evidence is separate: the untouched test/runtime at pre-PR baseline 9d3f7d71a90b46966dea0aa150d6fb81715b7573 failed on both 4.2.5 and 4.3.6 with broker PRECONDITION_FAILED for x-max-priority on quorum. Both inspected logs report one failure and no skips. The provider's baseline audit records all five inherited copies as skipped in pre-change CI. The earlier modified reproduction was not the exact original. The ordering method rewritten earlier in the stack remains rewritten; retaining its four assertions does not restore it. This pass leaves that method unchanged and adds independent scenarios.
  • netstandard1.5 for Foundatio.Logging.Serilog #106 push CI passed 145 tests, skipped 122 infrastructure-dependent cases, and failed none. fixing tests that were pointing to the wrong base test #104 push CI passed 300, skipped the five strict-quorum ordering cases requiring 4.3+, and failed none; this includes the nineteen added CI cases. Synchronize RenewedTimeUtc when dequeued from InMemoryQueue #105 push CI passed 390 and adding delete files by search #100 push CI passed 391, each with five expected strict-quorum version skips and zero failures. All eleven provider builds above passed at the exact listed revisions; earlier-head results are not substituted for them.
  • npm --prefix docs run build passed with existing LLM-docs warnings for external sidebar links. Separate rendered-page checks verified 300 local links/anchors across five guides; eleven provider URLs returned HTTP 200. Seven unchanged C# examples and a public utility API probe compiled against a fresh ed8606b archive with zero warnings/errors using .NET 10, Foundatio 13.0.4, RabbitMQ.Client 7.2.2, and supporting imports/application types. Thirteen configuration checks passed without requesting a broker connection.
  • Docs CI at e54e2b32b31393f89dab8b2a5d83b1562b4169f7: PR: passed; push: passed.
  • Single-node scheduling, non-atomic handoff/ACK, capacity limits, permissions, and application idempotency remain adoption constraints. Configuration checks do not establish live client-certificate authentication. Merge, provider release, and website publication remain separate actions.

Copy link
Copy Markdown
Member Author

Cross-repository documentation/workflow audit

Confirmed #574 is the canonical companion to Foundatio.RabbitMQ #100. I closed the concurrently created duplicate #575 rather than leave two documentation PRs to review. The provider README and PR body now point to this branch, docs/rabbitmq-4.2.5-delivery-contracts.

Reviewed the overview, delivery-safety, verification, quorum-migration, and general messaging corrections at e36f735f0633648804bdb9fbf47c1f6f1591b8be, including API names/defaults, queue versus exchange identity, required dispatch/terminal outcomes, the quorum broker/application budget relationship, TLS host semantics, and delayed-plugin limitations. The guides explicitly label companion/unreleased behavior and retain the 4.2.5 requirement.

The provider's documentation-only commit c569775c1498e895047f049bb164876dd0cba4d6 removes docs/delivery-safety.md and docs/tls-and-verification.md and shortens/links the README. Its diff against 7c1d477 changes only those three documentation paths. Runtime code, tests, dependencies, broker configurations, and workflows are preserved.

The provider workflow directory contains only the existing build.yml and copilot-setup-steps.yml. The provider PR retains just the existing Build input for preparing its delayed-plugin image; this documentation work adds no workflow. This companion PR changes documentation/navigation and the existing consumer skill, not GitHub Actions. The current provider Build 35803034042 is completed/successful for c569775c.

Remaining verification boundary: source/API/link review is not a rendered VitePress build or compiled-snippet test. Those documentation checks and provider-release coordination remain outstanding; no deployment or new workflow was introduced to mask that limitation. Keep this branch available while preview links depend on it, and replace them with published canonical routes only when those pages and the matching provider release are actually available.

@niemyjski niemyjski changed the title docs: centralize RabbitMQ 4.2.5 delivery and verification guidance docs: explain RabbitMQ strict dispatch, retention, and safe adoption Sep 24, 2026
@niemyjski niemyjski changed the title docs: explain RabbitMQ strict dispatch, retention, and safe adoption docs: explain RabbitMQ delivery safety and adoption requirements Sep 25, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant