<!-- review: finished -->

<a id="stream-mqtt-preread"></a>

# MQTT Preread

Позволяет извлекать идентификатор клиента и имя пользователя
из пакетов `CONNECT` протокола Message Queuing Telemetry Transport (MQTT)
версий
[3.1.1](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718028)
и
[5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901033).

При [сборке из исходного кода](https://angie.software//angie/docs/installation/sourcebuild.md#sourcebuild)
модуль необходимо включить с помощью [параметра сборки](https://angie.software//angie/docs/installation/sourcebuild.md#configure)
`--with-stream_mqtt_preread_module`.
В пакетах и образах из
[наших репозиториев](https://angie.software//angie/docs/installation/index.md#install-packages)
модуль включен в сборку.

<a id="configuration-example-63"></a>

## Пример конфигурации

<a id="choosing-a-server-in-a-group-by-client-id"></a>

### Выбор сервера в группе по идентификатору клиента:

```nginx
stream {

    mqtt_preread on;

    upstream mqtt {
        hash $mqtt_preread_clientid;
        # ...
    }
}
```

<a id="directives-72"></a>

## Директивы

<a id="index-0"></a>

<a id="s-mqtt-preread"></a>

### mqtt_preread

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `mqtt_preread` `on` | `off`;   |
|------------------------------------------------------------------------------------------|--------------------------------|
| По умолчанию                                                                             | `mqtt_preread off;`            |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | stream, server                 |

Управляет извлечением информации из пакета `CONNECT`
на этапе
[предварительного чтения](https://angie.software//angie/docs/configuration/processing.md#stream-sessions).
Если параметр включен (`on`),
то в контексте, где он задан,
заполняются перечисленные ниже переменные.

<a id="built-in-variables-20"></a>

## Встроенные переменные

Подробное описание семантики значений
см. в спецификации протокола MQTT версий
[3.1.1](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718031)
и [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901033).

<a id="v-mqtt-preread-clientid"></a>

### `$mqtt_preread_clientid`

Уникальный идентификатор клиента.

<a id="v-mqtt-preread-username"></a>

### `$mqtt_preread_username`

Необязательное имя пользователя.
