# Configuration reference (/connectors/rabbitmq/reference/configuration)



All 12 fields live under `[Connectors.Amqp]` and have environment-variable overrides of the
form `CONNECTORS_AMQP_*`. Defaults are taken verbatim from the server's `AmqpConfig` struct.

## Configuration fields [#configuration-fields]

| Env var                                | Default               | Type   | Validation / meaning                                                                                                                     |
| -------------------------------------- | --------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `CONNECTORS_AMQP_ENABLE`               | `false`               | bool   | Opt-in; `true` enables the connector. `false` skips the connector and all its validation.                                                |
| `CONNECTORS_AMQP_PORT`                 | `5672`                | int    | `0..65535`; the plain-TCP listener. `0` disables the plain listener.                                                                     |
| `CONNECTORS_AMQP_TLS_PORT`             | `5671`                | int    | `0..65535`; the TLS/AMQPS listener, active only when the server-wide Security block is configured. `0` disables it.                      |
| `CONNECTORS_AMQP_HEARTBEAT_SECONDS`    | `60`                  | int    | `≥ 0`; the negotiated heartbeat is the min non-zero of both sides; 2× idle → `client.timeout`.                                           |
| `CONNECTORS_AMQP_FRAME_MAX`            | `131072` (128 KiB)    | int    | `≥ 4096`; the FrameMax advertised to clients during negotiation.                                                                         |
| `CONNECTORS_AMQP_CHANNEL_MAX`          | `2047`                | int    | `1..65535`; max channels per connection (the negotiated cap).                                                                            |
| `CONNECTORS_AMQP_MAX_CONNECTIONS`      | `1000`                | int    | `≥ 0` (`0` = unlimited); over-limit connections complete the handshake then receive `connection.close(320, "connection limit reached")`. |
| `CONNECTORS_AMQP_MAX_BODY_SIZE`        | `104857600` (100 MiB) | int    | `> 0`; a body larger than this at content-header time → `406`/`311` and the body frames are drained.                                     |
| `CONNECTORS_AMQP_DEFAULT_VHOST`        | `"default"`           | string | non-empty; no `;:*>`, whitespace, or tab; no trailing `.`. The segment AMQP vhost `/` maps to.                                           |
| `CONNECTORS_AMQP_GET_BATCH_SIZE`       | `32`                  | int    | `1..1024`; bounds per-`basic.get` pulls.                                                                                                 |
| `CONNECTORS_AMQP_DEAD_LETTER_MAX_HOPS` | `16`                  | int    | `≥ 1`; the dead-letter cycle cap per (queue, reason).                                                                                    |
| `CONNECTORS_AMQP_MAX_RECEIVE_COUNT`    | `0`                   | int    | `≥ 0`; poison-message receive cap. `0` inherits the broker default.                                                                      |

<Callout type="warn">
  **Env-form rule — camelCase fields are snake-split.** `TlsPort` becomes
  `CONNECTORS_AMQP_TLS_PORT`, **not** `CONNECTORS_AMQP_TLSPORT`. The server converts each
  config key with `ToSnakeCase`, strips the dots, then uppercases — so insert the underscore at
  each camelCase boundary.
</Callout>

For narrative context on these fields — enabling/disabling the connector, TLS, and the
availability-first startup model — see [Configuration](../concepts/configuration).

## Validation rules [#validation-rules]

These rules are enforced at startup; a disabled connector (`CONNECTORS_AMQP_ENABLE=false`)
skips all validation.

| Field               | Rule                                                       |
| ------------------- | ---------------------------------------------------------- |
| `Port` / `TlsPort`  | when `Enable=true`, **at least one** must be non-zero.     |
| `Port`, `TlsPort`   | each in range `0..65535`.                                  |
| `FrameMax`          | `≥ 4096` (the protocol floor).                             |
| `ChannelMax`        | in range `1..65535`.                                       |
| `MaxConnections`    | `≥ 0` (`0` = unlimited).                                   |
| `MaxBodySize`       | `> 0`.                                                     |
| `DefaultVhost`      | non-empty; no `;:*>`, whitespace, or tab; no trailing `.`. |
| `GetBatchSize`      | in range `1..1024`.                                        |
| `DeadLetterMaxHops` | `≥ 1`.                                                     |
| `MaxReceiveCount`   | `≥ 0`.                                                     |

Two cross-config constraints are also enforced by the server's `Config.Validate()`:
`Connectors.Amqp.MaxReceiveCount` ≤ `Queue.MaxReceiveCount`, and
`Connectors.Amqp.GetBatchSize` ≤ `Queue.MaxNumberOfMessages`.

<Callout type="warn">
  **The literal `default` vhost is reserved.** `DefaultVhost` defaults to `"default"`. Clients
  reach it by connecting to vhost `/`; connecting directly to a vhost literally named
  `default` (e.g. `amqp://guest:guest@host:5672/default`) is rejected — the connector returns
  `402 invalid-path` (`"vhost \"default\" is reserved"`), and a running broker may instead
  surface `403 "no access to this vhost"`. Either way, reach the default vhost implicitly
  through `/`. See [Channel mapping](/connectors/rabbitmq/reference/channel-mapping).
</Callout>

## Related [#related]

<Cards>
  <Card title="Getting Started" href="/connectors/rabbitmq/tutorials/getting-started" description="Connect, declare, publish, and consume end-to-end through the RabbitMQ connector in minutes." />

  <Card title="Architecture" href="/connectors/rabbitmq/concepts/architecture" description="The everything-is-a-Queue model, virtual exchanges, and cross-protocol interop." />

  <Card title="TLS and mTLS" href="/connectors/rabbitmq/how-to/tls-and-mtls" description="Enable the AMQPS listener on 5671, the JWT-in-password rule, and mutual TLS." />

  <Card title="Channel mapping" href="/connectors/rabbitmq/reference/channel-mapping" description="The amqp.{vhost}.{queue} grammar, name constraints, and the reserved default vhost." />
</Cards>
