如何模仿MQTT代理和客户端上的意外故障(可用性和延迟)

时间:2019-04-15 22:56:28

标签: mqtt node-red

我要在MQTT上做一个简单的实验,以便如果代理或客户端意外不可用或延迟非常高,则将触发触发器。我认为服务器和客户端之间的关系是不可信的。因此,我不能仅从一侧依赖有关连接状态的信息。我必须监视所有这些,并仔细检查双方提供的指标。

Node-Red似乎是最好的选择,因为我已经使用Node-REd实现了触发器和其他东西。因此,使用其他工具(例如mosquitto)会很好,但是,在我看来,使用Node-RED实施所有操作似乎是一个更好的选择,只是避免了集成不同工具和各种环境的麻烦。因此,我认为代理将表示为Mosca Broker节点,而客户端将表示为输入/输出MQTT节点。

基本上,我想在突然断开连接或延迟较长时立即得到通知。例如,如果MQTT代理意外地不可用,那么应该有一种报告该不可用的方法。这是从服务器端开始的。另一方面,如果客户端未能传递消息,那么我想检查这是否是由客户端导致的错误,还是应该归咎于经纪人。

因此,我正在寻找一种适当的方法来提取有关MQTT代理和客户端行为的信息。并使用它们来处理并触发某个阈值的触发器。现在,在研究了node-red提供的监视选项之后,我自己的观察是,调试节点未提供检查MQTT状态的选项。我尝试了Catch节点,但我不知道在这种情况下它将如何有用。我还检查了状态节点,但是我不知道它在报告断开连接或高延迟方面有多有效。我还想知道是否可以使用Node-red构建方案并使用其他监视工具并将其与Node-RED集成,因为我想在Node-REd环境中立即处理其监视日志。以及基准测试工具如何。

对于延迟,我不知道是否存在现有的监视工具来帮助报告代理是否花费了更长的时间处理收到的消息。

我还研究了一些节点红色模块(Broker和MQTT客户端的源代码)。为了弄清楚我是否可以修改它们以使其达到预期的效果。但我不知道该怎么做。

总的来说,我想以适当的方式(不可用和高延迟)故意使用Node-Red模拟此类故障。有任何想法吗?我只是在寻找一些指导和想法,不一定是确切的解决方案,或者可能是某些链接。谢谢。

1 个答案:

答案 0 :(得分:0)

这正好回答了“只是寻找一些指导和想法”的要求。

代理失败很简单:启动mosquitto代理,将NODE-RED客户端连接到它,停止mosquitto。

您对延迟测试太含糊。什么和什么之间的延迟?您如何衡量延迟?只有改善问题,您才能成功。