# `PhoenixMicro.Transport.ConnectionSupervisor`
[🔗](https://github.com/iamkanishka/phoenix_micro/blob/v1.0.0/lib/phoenix_micro/transport/connection_supervisor.ex#L1)

A `Supervisor` that owns a single transport's connection process and its
associated worker pool.

One `ConnectionSupervisor` is started per configured transport:

    TransportSupervisor (one_for_one root)
    └── ConnectionSupervisor(:rabbitmq)   ← this module
          ├── Transport.RabbitMQ           ← connection GenServer
          └── WorkerPool(:rabbitmq_pool)   ← message processing pool

The `:rest_for_one` strategy means: if the connection dies, the worker
pool is restarted too (workers hold references to the connection channel).
If only the pool dies, the connection is left intact.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `pool_name`

```elixir
@spec pool_name(atom()) :: atom()
```

Returns the worker pool name for a given transport.

# `start_link`

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

---

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