Как сделать каждое сообщение MQTT Publih отдельным пакетом? - PullRequest
0 голосов
/ 27 декабря 2018

Я создаю систему электронных билетов, и я использую MQTT V3.1.1, чтобы позволить пользователю открыть ворота (ворота были сделаны с использованием Raspberry Pi 3 Model B +).

в этом случае я хочу загрузить тестирование брокера и малины с 10000 сообщениями публикации и различными темами для каждого сообщения (диапазон тем от bcn / bcn0000 - bcn / bcn00010000) с полезной нагрузкой отметки времени unix nano за один раз,тест прошел успешно, но когда я пытаюсь перехватить пакеты MQTT, которые попадают в мой Raspberry Pi во время теста, он захватывает только менее 10000 (это должно быть 10000 пакетов, верно?) MQTT опубликует сообщение, и я использую MQTT QoS 0. брокеря использую это Mosquitto установлен в моем VPS.

захваченные пакеты (захваченные с использованием TCPDUMP) имеют более 10 сообщений публикации MQTT в одном пакете MQTT.это вызвано алгоритмом Нэгла?и как сделать так, чтобы каждое сообщение отправлялось одновременно с отдельными пакетами для каждого сообщения публикации

Редактировать: программирование и логика на стороне сервера с использованием golang (paho.mqtt.golang) и raspberry с использованием python (paho.mqtt.python)и я установил для set_tcp_nodelay на mosquitto.conf значение true, но не повезло

stacked MQTT publish messages on one MQTT Packet list of captured packets on raspberry pi viewed on wireshark

1 Ответ

0 голосов
/ 29 декабря 2018

захваченные пакеты (захваченные с использованием TCPDUMP) имеют более 10 сообщений публикации MQTT в одном пакете MQTT.это вызвано алгоритмом Нэгла?и как сделать так, чтобы каждое сообщение отправлялось в одно и то же время с отдельными пакетами для каждого сообщения публикации

Я установил для set_tcp_nodelay на mosquitto.conf значение true, но не повезло

set_tcp_nodelay должно работать, номожет быть, отправлять сообщения одновременно, поэтому некоторые сообщения связываются друг с другом, доставляя на уровень tcp / ip с уровня приложения.

Есть ли какой-то метод, например flush () в (paho.mqtt.golang)?

или самая плохая идея - опубликовать одно сообщение, закрыть соединение и перезапустить новое соединение, чтобы отправить следующее сообщение.сумасшедший ...

и как @hardillb, мне любопытно, почему вы хотите отправлять отдельные пакеты?в соответствии с моделью tcp / ip нам все равно, как отправлять сообщения на уровне tcp / ip, мы можем получать правильные сообщения на уровне приложений, и этого достаточно.

...