Skip to content

Add technology-based infrastructure connection strings - #2273

Draft
niemyjski with Copilot wants to merge 11 commits into
mainfrom
copilot/how-to-use-rabbitmq-as-messagebus
Draft

niemyjski with Copilot wants to merge 11 commits into
mainfrom
copilot/how-to-use-rabbitmq-as-messagebus

Conversation

Copilot AI commented May 31, 2026 •

Copy link
Copy Markdown
Contributor

Closes #1526

Configure infrastructure once using technology-named connection strings while retaining legacy role selectors. A shared resolver preserves native Redis strings and RabbitMQ URIs, applies fixed provider priorities and explicit local overrides, and preserves structured-setting precedence. Redis connections are shared only for identical effective strings, preventing one role's endpoint from leaking into another. EX_ variables consistently override ordinary and Aspire variables.

Validation at e2d0475f8, including current main 1326f7463: 80 focused tests, Release solution build (zero warnings/errors), documentation checks/build and four tests, link/assets audit, Helm lint/template rendering, and diff checks passed. New hosted checks are pending.

Remaining gates: service-backed local dogfooding is incomplete and the Copilot contributor's CLA check remains pending. Draft status is preserved. No API contracts change. During rolling upgrades, keep providers and effective connection strings unchanged. Applying the bundled Redis/Elasticsearch pod-template changes replaces those pods once; custom selectors using the removed pod chart label need updating.

Verification and implementation details
  • Provider selection lives in one resolver instead of four independent option readers. Explicit selectors retain named-provider lookup, including Azure queue selectors.
  • Native Redis/RabbitMQ strings remain atomic. Focused tests cover parser compatibility, provider precedence, Redis endpoint isolation, disposal, and startup logs.
  • Self-hosting documentation explains configuration precedence, provider selection, Redis ownership, and migration boundaries with four diagrams.
  • Bundled Redis/Elasticsearch templates omit the application-config checksum and version-bearing pod label, preventing later unrelated application changes from restarting infrastructure. Helm rendering is static proof, not deployment proof.
  • Configuration tests: dotnet test --project tests/Exceptionless.Tests/Exceptionless.Tests.csproj --configuration Release -- --filter-class 'Exceptionless.Tests.Configuration.*' — 77 passed. Exceptionless.Tests.BootstrapperTests — 3 passed.
  • Build: dotnet build Exceptionless.slnx --configuration Release --no-restore.
  • Docs: deno task check and deno task verify. Website CI uses Deno 2.9.7 for Lume 3.3 compatibility.
  • Chart: helm lint k8s/exceptionless and helm template pr2273 k8s/exceptionless.
  • October 23 review found no additional actionable defect or reviewer thread. Current main integrated with a normal merge; two staging YAML conflicts retain the Folder examples and main OAuth cleanup; no application-source changes were added in this pass.

Copilot AI linked an issue May 31, 2026 that may be closed by this pull request
@CLAassistant

CLAassistant commented May 31, 2026 •

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ niemyjski
❌ Copilot
You have signed the CLA already but the status is still pending? Let us recheck it.

Copilot AI changed the title [WIP] Add example usage of RabbitMQ as message bus Support RabbitMQ URI connection strings for MessageBus configuration Jun 1, 2026
Copilot AI requested a review from niemyjski June 1, 2026 00:01
@niemyjski

Copy link
Copy Markdown
Member

Follow-up reviewer and thermo-nuclear audit complete at 202f7c2185ef41449164f8dcab3fb6b08395b3c8.

Feedback inventory:

  • GitHub currently exposes 0 review threads, 0 inline review comments, and 0 submitted reviews from human, Codex, or Copilot reviewers. There are therefore no reviewer threads to reply to or resolve.
  • The coverage bot comment is current but informational; it reports 77% changed-line coverage and does not identify a defect.
  • The CLAassistant comment is current and externally blocked: the Copilot co-author has not signed the CLA. This is not addressable in repository code.

Validation and RCA:

  • The original failure comes from routing an AMQP URI through the generic key/value connection-string parser and builder, which interpret URI delimiters as configuration syntax and rebuild a different value.
  • The current fix isolates raw URI handling at the MessageBus configuration boundary only when the provider selector resolves to RabbitMQ. It preserves the exact inline or named amqp/amqps URI, normalizes the provider for existing case-sensitive registration, supplies the legacy Data["server"] view, and leaves Redis/key-value parsing unchanged.
  • Focused coverage proves inline and named URIs, quotes, whitespace and mixed-case selectors, encoded credentials/vhosts, URI query parameters, a trailing selector separator, and both legacy Redis forms.

Thermo-nuclear review:

  • Audited the complete 9-file origin/main...HEAD diff under the strict structural bar. No file approaches or crosses 1,000 lines; the RabbitMQ exception is contained in one configuration helper; no canonical helper is duplicated; no cross-layer type leak, non-atomic update, needless sequencing, or spaghetti branch growth remains. A broader refactor would add risk without deleting meaningful complexity.

Verification:

  • dotnet test tests/Exceptionless.Tests/Exceptionless.Tests.csproj --configuration Release -- --filter-class Exceptionless.Tests.Configuration.MessageBusOptionsTests — 9/9 passed.
  • dotnet format Exceptionless.slnx --no-restore --verify-no-changes --include src/Exceptionless.Core/Configuration/MessageBusOptions.cs tests/Exceptionless.Tests/Configuration/MessageBusOptionsTests.cs — passed.
  • dotnet build Exceptionless.slnx --no-restore --configuration Release — succeeded with 0 warnings and 0 errors.
  • git diff --check origin/main...HEAD — clean.
  • Live CI: version, test-api, test-client, test-e2e, and docker-build all pass. Expected publish/deploy/preview jobs are skipped.

No additional code change or push was needed in this follow-up. The only remaining merge blocker is administrative: the PR is still draft and license/cla remains pending for the Copilot co-author.

@niemyjski niemyjski changed the title Support RabbitMQ URI connection strings for MessageBus configuration Add technology-based infrastructure connection strings Aug 12, 2026
@niemyjski

Copy link
Copy Markdown
Member

Final live follow-up completed at head 980301b.

Feedback disposition:

  • 0 review threads, 0 inline comments, and 0 submitted reviews; nothing required a code change, reply, or resolution.
  • The coverage comment is informational and reports 78% overall coverage without identifying a defect.
  • The remaining license/cla pending status is external: the Copilot co-author has not signed the CLA.

Current verification:

  • Focused configuration tests: 54/54 passed.
  • Focused bootstrapper tests: 3/3 passed.
  • Release solution build: passed with 0 warnings and 0 errors.
  • Docs verify: site build, 4/4 tests, telemetry check, and local link/anchor/asset audit passed.
  • git diff --check origin/main...HEAD: clean.
  • Live CI: Build website, version, test-api, test-client, test-e2e, and docker-build pass; publish/deploy/preview jobs are expected skips.

No commit or push was made because the live feedback and effective-diff audit found no surgical change to apply. The PR remains draft and BLOCKED only by the pending CLA status.

@niemyjski
niemyjski force-pushed the copilot/how-to-use-rabbitmq-as-messagebus branch from 638e8fb to feeaa5d Compare September 16, 2026 00:29
@github-actions

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Complexity Health
Exceptionless.AppHost 23% 22% 130 ❌
Exceptionless.Core 78% 70% 11088 ✔
Exceptionless.Insulation 57% 47% 397 ➖
Exceptionless.Web 86% 72% 9427 ✔
Summary 81% (28878 / 35712) 70% (14446 / 20618) 21042 ✔

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.

how to use rabbitmq as messagebus or queue?

3 participants