Skip to content

feat(orchestrator): rewrite main.go to use pipeline.Construct#440

Open
JamyDev wants to merge 1 commit into
jamy/orchestrator-pipelinefrom
jamy/orchestrator-rewrite
Open

feat(orchestrator): rewrite main.go to use pipeline.Construct#440
JamyDev wants to merge 1 commit into
jamy/orchestrator-pipelinefrom
jamy/orchestrator-rewrite

Conversation

@JamyDev

@JamyDev JamyDev commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Replace ~500 lines of manual wiring with a single pipeline.Construct call. The orchestrator's run() now:

  1. Builds per-queue profiles (Profile/Profiles in profiles.go)
  2. Populates orchestrator.Deps with profile-derived Factory adapters
  3. Calls pipeline.Construct(deps, orchestrator.Stages, ...) to get a single lifecycle.Component
  4. Drives Start/Stop on that component

Removed:

  • newTopicRegistry (topology now declared in orchestrator.Stages)
  • queueExtensions/queueRegistry (replaced by Profile/Profiles)
  • Three *Factory adapter structs (replaced by func-type adapters)
  • registerPrimaryControllers (stages declare their own New funcs)
  • registerDLQControllers (stages declare their own DLQ funcs)

The host retains: infrastructure bootstrap, per-queue profile construction, change provider wiring, gRPC server lifecycle, and signal handling — all host-specific concerns per the RFC.

Test Plan

Boot service with main.go and test against simulator

Issue

https://linear.app/uber/issue/CODEM-209/example-figure-out-a-better-structure-for-wiring-up

Stack

Replace ~500 lines of manual wiring with a single pipeline.Construct
call. The orchestrator's run() now:

1. Builds per-queue profiles (Profile/Profiles in profiles.go)
2. Populates orchestrator.Deps with profile-derived Factory adapters
3. Calls pipeline.Construct(deps, orchestrator.Stages, ...) to get a
   single lifecycle.Component
4. Drives Start/Stop on that component

Removed:
- newTopicRegistry (topology now declared in orchestrator.Stages)
- queueExtensions/queueRegistry (replaced by Profile/Profiles)
- Three *Factory adapter structs (replaced by func-type adapters)
- registerPrimaryControllers (stages declare their own New funcs)
- registerDLQControllers (stages declare their own DLQ funcs)

The host retains: infrastructure bootstrap, per-queue profile
construction, change provider wiring, gRPC server lifecycle, and
signal handling — all host-specific concerns per the RFC.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

2 participants