Localzet Server and Cluster documentation

MQTT: API и эксплуатация

Пакет localzet/mqtt требует Localzet Server ^7.0. Client принимает адрес mqtt://host[:port] (по умолчанию 1883), mqtts://host[:port] (8883) или TCP address. protocol_level: 4 включает MQTT 3.1.1, 5 — MQTT 5.

Настройки и callbacks

Часто используемые параметры:

ПараметрНазначение
client_idИдентификатор сессии брокера; используйте уникальное значение на активный процесс
username, passwordCredentials брокера, передавайте из secret store
connect_timeoutПредельное ожидание соединения
resubscribeПовторно подписаться на сохранённые topics после reconnect
sslTLS boolean или stream SSL context
propertiesMQTT 5 connect properties

onConnect, onReconnect, onMessage, onClose и onError — callbacks клиента. Типовой порядок: создать клиента, установить обработчики, вызвать connect(), подписаться из onConnect, а затем публиковать. Основные методы: subscribe($topic, $options, $callback, $properties), unsubscribe(...), publish($topic, $content, $options, $callback, $properties), disconnect() и reconnect().

Для mqtts:// включается TLS transport. Настройте SSL context с проверкой peer и hostname, доверенным CA и допустимой версией TLS; не отключайте verify_peer для удобства. Не публикуйте пароль, payload или чувствительные topics в debug-логах.

Доставка и восстановление

QoS 1 допускает повторную доставку. Reconnect и автоматическая повторная подписка не превращают callback в exactly-once обработчик. Делайте операции потребителя идемпотентными, учитывайте clean/persistent session настройки брокера и обрабатывайте отказ подключения и закрытие. Пакет не управляет брокером, ACL, хранилищем сообщений или retained-message политикой.

composer run test запускает протокольные регрессии. composer run test:broker требует Docker и проверяет Mosquitto сценарии TCP/TLS, credentials, QoS 1 и reconnect. В тесте сертификат самоподписанный с отключённой проверкой цепочки; успешный тест подтверждает handshake, но не production certificate validation.