The queue manager is a Go backend responsible for provisioning and maintaining messaging infrastructure for a microservice ecosystem. It reconciles the desired topology defined in PostgreSQL with the actual state of the queue provider (initially RabbitMQ) and exposes operational endpoints for observability and manual synchronization.
- Reconcile exchanges, queues, and bindings at startup and on demand.
- Continuously verify messaging resources through scheduled health checks.
- Provide read-only access to expected topology definitions sourced from the database.
- Expose HTTP endpoints for health, readiness, and reconciliation insights.
- Architecture
@architecture/architecture.md— Four-layer system overview.@architecture/queue-provider.md— Queue provider abstraction and RabbitMQ implementation notes.@architecture/tech-stack.md— Go libraries and supporting components.
- Concepts
@concepts/overview.md— Service intent and operating model.
- Data Model
@tables/README.md— Definitions of queues, exchanges, service assignments, and bindings tables.
- API Surface
@apis/README.md— Endpoint specs: requests, responses, examples.@apis/response-format.md— Standard response envelope (message,data,metadata).
- Load expected state from PostgreSQL.
- Connect to RabbitMQ via the provider abstraction.
- Validate existing exchanges, queues, and bindings; create or remove resources to align with expectations.
- Serve HTTP endpoints for health, readiness, and topology inspection.
- Periodically re-run reconciliation to maintain alignment.
- PostgreSQL migrations are the sole mechanism for altering topology definitions.
- The repository layer exposes read-only accessors; runtime components never mutate database records.
- Health checks and status verification rely on real-time provider queries rather than cached data.
- Implement the provider interface and repository contracts.
- Wire Gin controllers to expose the documented endpoints.
- Configure continuous reconciliation intervals and logging/metrics integration.