Запустите скрипт оболочки 100 раз / сек. - PullRequest
0 голосов
/ 07 апреля 2020

ИДЕАЛЬНАЯ ЦЕЛЬ: Publi sh 100 сообщений "heartbeat" / сек. Через MQTT с использованием Mosquitto в качестве брокера.

Чтобы отправить один пульс, я легко могу сделать mosquitto_pub -t "ems/heartbeat" -m 0 ,

Мне известна утилита watch в Unix системах, но она недостаточно быстра для достижения цели. Мой первый подход к проблеме состоял в том, чтобы увеличить это с помощью команды while sleep 0.01; do mosquitto_pub -t "ems/heartbeat" -m 0; done. Подписавшись на "ems / heartbeat" topi c (mosquitto_sub -t "ems/heartbeat"), я довольно уверен, что сообщения, опубликованные в topi c, намного меньше 100 ожидаемых в период времени 1 второй. Итак, вот мой вопрос: как я могу запустить скрипт оболочки - пульс выше - 100 раз в секунду, или даже лучше, как я могу публиковать sh 100 сообщений / сек c поверх определенного MQTT topi c?

Название может показаться немного вводящим в заблуждение по сравнению с моей конечной целью, но поиск способа запустить сценарий оболочки 100 раз / с c должен сработать. Если есть разные способы решения проблемы, они, конечно, приветствуются! Спасибо!

РЕДАКТИРОВАТЬ И ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Получатель этих сообщений является просто микроконтроллером, который должен проверить, что соединение с Системой мониторинга Electroni c (ноутбук) является живым. Потребность в 100 сообщений / сек c обусловлена ​​тем фактом, что микроуправление обеспечивает управление высокоскоростными исполнительными механизмами, и когда происходит потеря соединения, все должно быть в безопасном состоянии.

Основа c Предполагается, что 100 сообщений распространяются в течение 1 секунды и поступают от одного объекта, EMS.

Запустив команду time, вы получите выходной сигнал, поэтому невозможно использовать mosquitto_pub для отправки 100 сообщений в секунду, как указано выше.

time mosquitto_pub -t "ems/heartbeat" -m 0

real    0m0.039s
user    0m0.006s
sys     0m0.011s

1 Ответ

1 голос
/ 07 апреля 2020

Короткий ответ - нет.

Используйте подходящий инструмент для генерирования нагрузки, например, jmeter имеет поддержку MQTT.

В противном случае используйте подходящую клиентскую библиотеку MQTT и подключитесь один раз, а затем просто опубликуйте sh у всех oop. Таким образом, у вас нет лишних затрат на настройку и разрыв нового соединения с брокером для каждого сообщения (что и делает управление mosquitto_pub этим способом)

...