# `PhoenixMicro.Supervisor`
[🔗](https://github.com/iamkanishka/phoenix_micro/blob/v1.0.0/lib/phoenix_micro/supervisor.ex#L1)

Root supervisor for the `phoenix_micro` OTP application.

## Supervision tree

    PhoenixMicro.Supervisor (one_for_one)
    ├── Registry
    ├── CircuitBreaker.Store
    ├── Schema.Registry
    ├── Phoenix.MetricsStore
    ├── Transport.Memory (always — no connection supervisor needed)
    ├── ConnectionSupervisor(:rabbitmq | :kafka | :nats | :redis_streams)
    │     ├── Transport.* (connection GenServer)
    │     └── WorkerPool (bounded task pool for message processing)
    ├── Producer
    ├── RPC
    ├── ConsumerManager (DynamicSupervisor)
    │     └── Pipeline (Broadway) per consumer
    └── Saga.Supervisor (DynamicSupervisor)

Each real transport gets its own `ConnectionSupervisor` using a
`:rest_for_one` strategy: if the connection dies, its worker pool
restarts too (workers hold channel references).

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `start_link`

```elixir
@spec start_link(keyword()) :: Supervisor.on_start()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
