位置: 编程技术 - 正文

Node.js + Redis Sorted Set实现任务队列

编辑:rootadmin

推荐整理分享Node.js + Redis Sorted Set实现任务队列,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

需求:功能 A 需要调用第三方 API 获取数据,而第三方 API 自身是异步处理方式,在调用后会返回数据与状态 { data: "查询结果", "status": "正在异步处理中" } ,这样就需要间隔一段时间后再去调用第三方 API 获取数据。为了用户在使用功能 A 时不会因为第三方 API 正在异步处理中而必须等待,将用户请求加入任务队列中,返回部分数据并关闭请求。然后定时从任务队列里中取出任务调用第三方 API,若返回状态为”异步处理中“,将该任务再次加入任务队列,若返回状态为”已处理完毕“,将返回数据入库。

根据以上问题,想到使用 Node.js + Redis sorted set 来实现任务队列。Node.js 实现自身应用 API 用来接受用户请求,合并数据库已存数据与 API 返回的部分数据返回给用户,并将任务加入到任务队列中。利用 Node.js child process 与 cron 定时从任务队列中取出任务执行。

Node.js + Redis Sorted Set实现任务队列

在设计任务队列的过程中需要考虑到的几个问题

并行执行多个任务 任务唯一性 任务成功或失败后的处理

针对以上问题的解决方案

并行执行多个任务利用 Promise.all 来实现 任务唯一性利用 Redis sorted set 来实现。使用时间戳作为分值可以实现将 sorted set 作为 list 来使用,在加入任务时判断任务是否已经存在,在取出任务执行时将该任务分值设置为 0,每次取出分值大于 0 的任务来执行,可以避免重复执行任务。 执行任务成功后删除任务,执行任务失败后将任务分值更新为当前时间时间戳,这样就可以将失败的任务重新加入任务队列尾部

示例代码

Node.js的基本知识简单汇总 Node.js从年诞生至今,已经发展了两年有余,其成长的速度有目共睹。从在github的访问量超过Rails,到去年底Node.jsS创始人RyanDalh加盟Joyent获得企业资助

nodejs微信公众号支付开发 odeJs微信公众号功能开发,移动端H5页面调用微信的支付功能。这几天根据公司的需要使用node和h5页面调用微信的支付功能完成支付需求。现在把开发过程

详解Node.Js如何处理post数据 实现思路将data和end事件的回调函数直接放在服务器中,在data事件回调中收集所有的POST数据,当接收到所有数据,触发end事件后,其回调函数调用请求

标签: Node.js + Redis Sorted Set实现任务队列

本文链接地址:https://www.jiuchutong.com/biancheng/370797.html 转载请保留说明!

上一篇:Node.js connect ECONNREFUSED错误解决办法

下一篇:Node.js的基本知识简单汇总(node.js的概念)

  • 购销合同印花税计税金额含税吗
  • 应纳税所得额怎么计算应纳税额
  • 公司购买银行理财产品怎么做账
  • 社保税局代缴
  • 贴现的费用怎么入账
  • 知道含税价,税率,怎么算税金
  • 当月已抵扣的专用发票能作废吗
  • 完工百分比法完工进度怎么算
  • 资产类期末借方余额怎么算
  • 工程在建期间的会计分录
  • 简易征收和简易计税的区别
  • 电费做其他业务收入的账务处理怎么做?
  • 以旧换新如何确认收入
  • 一般账户网银可以发工资吗
  • 购置办公大楼
  • 金税三期个人所得税扣缴系统手机版
  • 有收入零申报要紧吗
  • 无票收入报税后,后期又开票出去怎么处理?
  • 银行理财产品属于基金吗
  • 有哪些方法可以判断乳剂的类型
  • surface安装win10专业版
  • macos10.15.7更新
  • mac怎么设置屏幕保护壁纸
  • win11怎么调整任务栏位置
  • 资产处置损益是什么科目
  • 自产自用的产品用于在建工程
  • 如何做会计分录
  • 如何防范税务风险
  • 什么叫毛利润和净利润
  • 八个与cpu相关的字符
  • 成品油消费税怎么抵扣
  • php更新数据
  • 银行提取现金会计等式
  • EasyExcel使用与步骤
  • yolo部署到服务器
  • pytorch入门教程(非常详细)
  • php年月日时间代码
  • 资本公积转增注册资本的条件
  • 【小沐学C++】C++ MFC中嵌入web网页控件(WebBrowser、WebView2、CEF3)
  • mysql存储引擎是什么意思
  • 视同销售的情况有哪些?
  • 公司注册完成以后需要做哪些事情
  • 发票的普票和专票什么区别
  • 电汇跟支票的区别
  • 帝国cms商城教程
  • 企业哪些支出可以用现金支付
  • 国家为什么要征收各种税
  • mysql常见报错
  • 公司用卫生纸是干什么的
  • 房地产开发结转成本
  • 个体户如何做账?
  • 收到外国人的礼物怎么感谢
  • 长期股权投资的成本法和权益法区别
  • 商业汇票怎么算到期日
  • 如果非货币性资产会怎样
  • 工程领用原材料账务处理
  • 其他应付款的核算项目是什么
  • 超市代销如何分成
  • 公司账本需要保留几年
  • 一般要做代理,授权书有什么用
  • mysql实现合并同一ID对应多条数据的方法
  • XP系统怎么删除密码
  • linux系统垃圾怎么清理
  • 如何快速让你的钱变多
  • win8系统设置错误
  • win7原始账号和密码
  • mac如何修改用户名称
  • win7蓝牙驱动软件
  • eclipse 单词
  • 为什么你应该使用手机
  • cs1-u和cs1-f的区别
  • 跟我从零基础学到了什么
  • keycode输入cat
  • js 数组处理
  • js 表格
  • 宝鸡税务局长
  • 广东省纳税信用等级
  • 上海社保基数对照表
  • 个税已申报税额为0可以退税吗
  • 绍兴柯桥有哪些村
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设