的最终目标:在MQTT上发布100条“心跳”消息/秒,使用Mosquitto作为代理。
要发送一个心跳,我可以轻松地做mosquitto_pub -t "ems/heartbeat" -m 0。
我知道Unix系统中的watch实用程序,但速度还不够快。我解决这个问题的第一种方法是使用while sleep 0.01; do mosquitto_pub -t "ems/heartbeat" -m 0; done命令来扩展这个问题。通过订阅“ems/心搏”主题(mosquitto_sub -t "ems/heartbeat"),我确信发布到主题的消息比1秒内预期的100要少得多。下面是我的问题:如何运行一个shell脚本--心跳超过100次--每秒100次,或者更好的是,如何在某个MQTT主题上每秒发布100条消息?
与我的最终目标相比,这个标题可能有点误导,但是找到一种方法来运行shell脚本100次/秒应该可以做到这一点。如果有不同的方法来解决这个问题,他们当然是欢迎的!谢谢!
编辑&附加信息:是这些消息的接收方,它只是一个微控制器,需要检查与电子监控系统(笔记本电脑)的连接是否存在。需要100条消息/秒的事实是,微控制器为高速执行器提供控制,当发生连接丢失时,一切都需要处于安全状态。
基本假设是100条消息在1秒的时间范围内传播,并且来自一个实体,即EMS。
通过运行time命令,这是输出,因此不可能使用mosquitto_pub每秒发送100条消息,正如所指出的。
time mosquitto_pub -t "ems/heartbeat" -m 0
real 0m0.039s
user 0m0.006s
sys 0m0.011s发布于 2020-04-07 09:14:34
简单的回答是不要。
使用适当的负载生成工具,例如jmeter具有MQTT支持。
否则,使用适当的MQTT客户端库并连接一次,然后在循环中发布。这样,您就没有为每条消息设置和断开到代理的新连接的开销(这就是以这种方式驱动mosquitto_pub的原因)。
https://stackoverflow.com/questions/61076424
复制相似问题