位置: 编程技术 - 正文

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

  • 房屋契税缴纳比例
  • 销项税额是指
  • 动迁补偿款怎么算
  • 生产部的管理人员简介范文
  • 企业拆迁补偿金的税务处理
  • 发生了原材料运进和成品运出,但并未发生所有权
  • 给中间人回扣犯罪吗
  • 流动负债占比低于50%,是什么结构类型
  • 注册资本可以是0元吗
  • 企业重组资产转移是否涉税
  • 复式记账的优点有哪些
  • 取得的收入含税吗
  • 非独立核算的分公司如何报税
  • 医院 科室承包
  • 现金折扣为什么计入主营业务收入
  • 印花税账务处理
  • 公司土地转让另外公司
  • 银行利息回单怎么打印
  • 现金报销银行账户
  • 个人取得的拆迁款需要缴纳个人所得税吗
  • 营改增后纳税人可以使用的发票种类
  • 交防伪税控技术怎么交
  • 幼儿园是否缴纳残疾人保障金
  • 所得税a类申报表
  • 航天金穗怎么开票
  • 固定资产可以一次折旧完吗
  • 怎么添加一个
  • 小规模纳税人减征额怎么计算
  • 利得和损失计入哪里
  • mac如何修改照片的尺寸大小
  • 简单了解php编程软件
  • windows7怎样升级windows10
  • 企业职工工伤赔偿标准
  • 含税价怎么计算增值税
  • 业务招待费调增后仍然亏损
  • 支付给个人的劳务报酬代扣个税
  • javascript表单验证和控制类
  • 计算机视觉的未来发展方向有哪些
  • 什么是微前端
  • php静态方法可以被继承吗
  • 住宿费可以抵扣进项吗
  • 跨年的增值税专票怎么开
  • 本月没有销售收入,需要申报增值税吗
  • 所得税申报资产总额平均值
  • 企业送的购物卡怎么退回去
  • Python中自定义异常
  • mysql5.7压缩包安装配置教程
  • 融资租赁手续费一次性还是摊销
  • 技术服务费该怎么收
  • 建筑工程企业人才优势怎么写
  • 固定资产出售通过什么科目
  • 借方记录什么的增加
  • 在建工程发生的运费计入什么科目
  • 销售现金优惠会计分录
  • 综合所得的个人所得税有哪些筹划技巧
  • 汇兑损益分录如何写
  • centos rpc
  • win10 更新 蓝屏
  • windows10的设置在哪里
  • Vista、XP、Windows7下非会员如何去除QQ2009的广告
  • linux promisc
  • win7计算机快捷方式不见了
  • osx安装win10
  • 将Red Hat 9.0 CD iso合成一张DVD iso的方法
  • 离线安装macos
  • win10系统家庭组如何关闭家庭组访问用户名密码
  • js里的this
  • jQuery实现select模糊查询(反射机制)
  • cocos code ide 1.0.0 RC0 使用教程
  • android动态添加fragment
  • 置顶pyq会被自己屏蔽的人看到吗
  • shell 管道 并行
  • 2个月培训
  • python切片菜鸟教程
  • js复制字符串的方法
  • 多计提的税金如何处理
  • 预缴增值税申报表申报期限
  • 四川电子税务局网上办税大厅
  • 个体税务登记资料不齐怎么办
  • 城市维护建设税税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设