Node-RED使用指南:19:使用trigger实现retry

在这里插入图片描述
在流程控制中,经常会碰到异步方式对结果进行确认,如果出错的情况下进行重试,这篇文章结合具体的示例对trigger在Node-RED中流程编辑的方式进行进一步说明。

事前准备

以容器方式启动Node-RED服务,启动命令如下所示:

启动命令:docker run -it -p 1880:1880 -v $PWD/data:/data -e TZ=Asia/Shanghai --name nodered -d nodered/node-red:1.0.4

使用场景:连接性检测

场景说明:如果持续能够获取输入的情况下,表明连接是正常的,如果一旦不能有数据过来,可能是硬件传感器的数据没有获取,说明是失败的情况。

在这里插入图片描述
trigger节点设定信息详细如下所示:
在这里插入图片描述
部署之后,执行结果如下所示
在这里插入图片描述
当然也可以将输出进行合并,显示用的输出节点合并之后如下图所示
在这里插入图片描述
部署并执行,结果如下所示
在这里插入图片描述

retry逻辑

上述的示例有一个问题就是一旦出错,不能够持续性地进行提示,再结合一个trigger即可实现常见的retry功能,从而实现一旦停止5s以上不输入就会持续输出信息,如果数据一旦继续输入就会不再提示错误信息的功能。flow信息如下所示
在这里插入图片描述

  • trigger 5s节点设定信息如下所示

在这里插入图片描述

  • retry节点设定如下所示:
    在这里插入图片描述

部署之后执行结果如下所示:
在这里插入图片描述

  • JSON格式的flow
[{"id":"d67f423d.4031","type":"inject","z":"73554227.4474dc","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":160,"wires":[["3ddd10ea.96ab3","8a18d983.f05418"]]},{"id":"3ddd10ea.96ab3","type":"debug","z":"73554227.4474dc","name":"正常输出","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":700,"y":160,"wires":[]},{"id":"8a18d983.f05418","type":"trigger","z":"73554227.4474dc","op1":"retry","op2":"true","op1type":"str","op2type":"bool","duration":"5","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":340,"y":220,"wires":[["fd94e825.30c3f8"]]},{"id":"fd94e825.30c3f8","type":"trigger","z":"73554227.4474dc","op1":"5秒没有动作,请检查硬件","op2":"5秒没有动作,请检查硬件","op1type":"str","op2type":"str","duration":"-5","extend":true,"units":"s","reset":"retry","bytopic":"all","name":"retry","x":510,"y":220,"wires":[["3ddd10ea.96ab3"]]}]

总结

在Node-RED中,本例中展示的特性还可以用作异常时的替换,比如正常时传感器以2秒的频率进行数字的更新仪表盘的显示,而一旦硬件出现问题,可以考虑使用这种方式进行异常情况下的数据替代输出,比如显示为0,一旦硬件恢复动作,retry不再执行,而仪表盘的显示也能随之正常。

淼叔 CSDN认证博客专家 神经网络 TensorFlow NLP
资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页