位置: 编程技术 - 正文

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的概念)

  • 职工旅游不计入福利费
  • 补缴的社保可以报销吗
  • 工业土地摊销年限最新规定
  • 电力工程服务费计入什么科目
  • 非流动资产处置损失属于什么会计科目
  • 纳税人等级怎么划分
  • 未达起征点的税金如何做账
  • 实收资本增加的印花税
  • 公司补缴社保协议书
  • 纳税人销售自产门窗并负责安装
  • 运输费可以和货款合并开票吗
  • 单位的收入是刷卡怎么做账
  • 劳务分包服务费率
  • 在杂志上发表论文
  • 工程改造合同印花税
  • 跨年的发票可以冲红重开吗
  • 预缴企业所得税怎么做会计分录
  • 公休假补贴多少钱
  • 一个季度为纳税期限的规定适用
  • 会计准则规定的关联方
  • 营业费用包括哪些明细科目内容
  • 购买超市购物卡打几折
  • 外派人员计算个人所得税可否有附加扣除
  • 装饰公司发票怎么
  • 预付的各种押金
  • 公司产品因质量问题买家追究
  • 贸易型企业怎么做账
  • win10组策略关闭defender
  • 报销差旅费怎么算
  • Ant Design Pro(5)-7.高级表格ProTable
  • 商誉减值计算步骤
  • php的lamp
  • 前端工程搭建
  • 建行E信通贴现需要什么资料
  • 行人检测技术
  • 四轮电车电机价格
  • 2023年我要实现的目标是
  • 固定资产暂停使用期间需要计提折旧吗
  • 增值税政策执行口径存在的问题及建议
  • 个人终止投资经营的条件
  • 赔偿客户款应该怎么记账
  • 固定资产盘点方案
  • sql server 2016 sp2
  • 财务会计和预算会计金额可以不等吗
  • 应收账款的注意要点
  • 发票未及时开,但是双方会计已经做帐,怎么办?
  • 应交税费未交增值税借方表示什么
  • 公户转到老板私户要多久
  • 扫描仪有危害吗
  • 权益净利率计算公式产权比率
  • 代垫水电费的账务处理
  • 网上报税零申报流程演示2018
  • 应付款多付了怎么入账
  • 可以先注销银行信用卡吗
  • 会计中原始凭证是什么意思
  • 修改注册表显示隐藏文件
  • win10周年更新版是什么意思
  • ubuntu中安装vim
  • 苹果电脑怎么归类app
  • 联想电脑win7系统开机修改开机密码
  • centos6.9
  • javascript数据结构与算法
  • 飞车超人助手官网
  • 用python编写程序
  • js显示时间并且之后秒数实时更新
  • jsforeach循环遍历数组
  • linux流量监测工具
  • 不用js多浏览器能用吗
  • html竖排改为横排
  • 安卓演示模式有什么用
  • js获取内容高度
  • javascript中substr,substring,slice.splice的区别说明
  • unity camera fov
  • AndroidStudio中aar文件引用
  • 浅谈自己对教育的理解
  • Android StateMachine解析( 1 )
  • JQuery点击行tr实现checkBox选中的简单实例
  • 车辆购置税是地方收入吗
  • 开专票需要什么资料
  • 青海税务app怎么开票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设