node-威尼斯人最新

nodered · august 27, 2020 · last by replied at august 19, 2022 · 680 hits

trigger 是 node-red 中的一个常用组件,这篇文章继续结合实例介绍使用 trigger 进行防止抖动或者消息队列机制的方法。

事前准备

以容器方式启动 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

限速策略:消息队列 vs 消息抛弃

限速必然导致数据无法及时处理完毕,对于这些消息一般有两种做法较为常见:

消息队列:按照消息的顺序逐条进行 消息抛弃:只处理一定时间段内的第一条,其余的全部抛弃

消息队列是缺省的对应方式,限速之后会对消息队列里的消息逐条处理,很多场景都是可以理解的。而消息抛弃的机制则是抛弃指定时间段内的其余信息,比如同样的操作,连续点击多次,有可能是误操作,实际上一定时间内只需要一此操作就可以了,比如代码提交引起的自动构建,无论是谁的代码提交进行的构建,对这个阶段所有的代码提交者,这次构建的结果都是可以共用的,这种情况下就完全可以使用消息抛弃的机制。比如 jenkins 中在很早的版本就是使用类似的方式来控制 rush hour 的性能瓶颈。

消息队列方式

flow 设定

使用如下 flow 来对消息队列方式的限速进行说明

输入消息 1-3 节点:以输入消息 1 为例,进行说明,为 inject 节点的缺省设定

结果显示节点:debug 节点的缺省设定 结果确认 进行部署操作并,手动执行(每个 inject 节点快速点击几下)确认结果如下:

消息抛弃方式

和消息队列方式相比,实际上只是多选了一个复选框,详细信息如下:

flow 设定

使用如下 flow 来对消息抛弃方式的限速进行说明

输入消息 1-3 节点:以输入消息 1 为例,进行说明,为 inject 节点的缺省设定

结果显示节点:debug 节点的缺省设定

结果确认

进行部署操作并,手动执行(每个 inject 节点快速点击几下)确认结果如下:

json 格式的 flow

[{"id":"891040ad.e0b96","type":"inject","z":"73554227.4474dc","name":"","topic":"","payload":"输入消息 2","payloadtype":"str","repeat":"","crontab":"","once":false,"oncedelay":0.1,"x":260,"y":160,"wires":[["c6f6eda1.50745"]]},{"id":"c6f6eda1.50745","type":"delay","z":"73554227.4474dc","name":"","pausetype":"rate","timeout":"5","timeoutunits":"seconds","rate":"1","nbrateunits":"3","rateunits":"second","randomfirst":"1","randomlast":"5","randomunits":"seconds","drop":true,"x":480,"y":160,"wires":[["98da75ae.e12448"]]},{"id":"98da75ae.e12448","type":"debug","z":"73554227.4474dc","name":"结果显示","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targettype":"msg","x":680,"y":160,"wires":[]},{"id":"140a50de.1f611f","type":"inject","z":"73554227.4474dc","name":"","topic":"","payload":"输入消息 3","payloadtype":"str","repeat":"","crontab":"","once":false,"oncedelay":0.1,"x":260,"y":240,"wires":[["c6f6eda1.50745"]]},{"id":"e7207c13.5a627","type":"inject","z":"73554227.4474dc","name":"","topic":"","payload":"输入消息 1","payloadtype":"str","repeat":"","crontab":"","once":false,"oncedelay":0.1,"x":260,"y":80,"wires":[["c6f6eda1.50745"]]}]

来源:

nodered 澳门人威尼斯3966官网:

noderedgithub:

nodered 英文社区:

nodered 中文社区:https://www.iotschool.com/topics/node81

nodered 中文社区 qq 群:8604461

no reply at the moment.
需要 sign in 后方可回复, 如果你还没有账号请点击这里 sign up
网站地图