Node-RED使用指南:21:限速的消息抛弃或者消息队列机制
发布日期:2021-06-30 20:18:17
浏览次数:3
分类:技术文章
本文共 2087 字,大约阅读时间需要 6 分钟。
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节点的缺省设定
- limit 1 msg/3s:使用trigger缺省设定,间隔设定为3s
- 结果显示节点: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"]]}]
转载地址:https://liumiaocn.blog.csdn.net/article/details/104747400 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月07日 03时16分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
十二时辰篇:这该死的 996
2019-04-30
2021最新 上海互联网公司排名
2019-04-30
字节vs快手!取消大小周之战
2019-04-30
送一个闲置显示器!
2019-04-30
Oracle 行转列 pivot函数基本用法
2019-04-30
Oracle字符串分隔符替换(替换奇数个或偶数个)
2019-04-30
Oracle 利用 UTL_SMTP 包发送邮件
2019-04-30
Oracle 的循环中的异常捕捉和处理
2019-04-30
Oracle通过pivot和unpivot配合实现行列转换
2019-04-30
给Oracle数据库换一个1522端口的监听
2019-04-30
Excel表格数据生成ECharts图表
2019-04-30
阿里云短信服务python版,pyinstaller打包运行时缺少文件
2019-04-30
Oracle的pfile和spfile的一点理解和笔记
2019-04-30
WebService的简单案例记录(Java)
2019-04-30
Html利用PHP与MySQL交互
2019-04-30
dos简单命令
2019-04-30
mysql的安装与卸载与Navicat远程连接
2019-04-30
java实现稀疏数组及将稀疏数组存入硬盘中
2019-04-30
2021-05-18
2019-04-30