Почему 118 зелёных тестов не спасли MQTT-брокер на Rust
Обстоятельный инженерный разбор MQTT-брокера, написанного на Rust без сторонних пакетов. 118 автоматических тестов прошли, но mosquitto_pub в режиме доставки QoS 1 ждал подтверждения четыре секунды и завершался по тайм-ауту.
Тесты проверяли кодирование пакета подтверждения PUBACK, однако обработчик вообще его не отправлял. После разделения реестра тем на четыре сегмента вскрылся второй сбой: подписка sensors/+/temp и публикация sensors/kitchen/temp попадали в разные сегменты.
В разборе BlitzBroker есть и замер: около 495 тыс. сообщений в секунду против 402 тыс. у одного сегмента.
Читать разработчикам сетевых протоколов и интеграционных тестов. Проверяйте собранный бинарник независимым клиентом: подтверждения, подписки с подстановкой и переполнение очередей.
Post #3044
195
