位置: 编程技术 - 正文

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

  • 需要出口
  • 代销商品的手续费税率是多少
  • 购买固定资产的进项税可以抵扣吗
  • 资源税计入什么科目
  • 年度企业所得税申报时间
  • 以前年度损益调整结转到未分配利润
  • 超市的库存商品分类混乱怎么看出来的
  • 同业清算交易渠道
  • 成品油经销企业开具的成品油电子专用发票
  • 法定盈余公积和法定公积金一样吗
  • 什么是联营商品
  • 外购商品赠送客户怎么做账
  • 银行付款退回重新开户
  • 库存材料盘亏会计分录
  • 小规模纳税人税收优惠政策变化
  • 开具正规发票和不开发票对企业纳税的影响有什么不同?
  • 车改补贴是否计入工资总额
  • 专项应付款需要偿还吗
  • 研发费用费用化金额和资本化金额有什么区别
  • 委托加工白酒的计税依据
  • 计提本月银行借款
  • lec风险评价方法
  • 短期投资损失
  • android 设置按钮颜色
  • 行纪合同的效力
  • vue jsx报错
  • 赡养人 被赡养人
  • 虚拟机安装apache
  • win7如何调出浏览器
  • php初学者常见问题和答案
  • 预收账款什么时候确认增值税
  • 付的押金冲抵部分怎么算
  • 股东帮公司垫付货款
  • 企业借款会计处理
  • 波特兰在哪
  • CNN+LSTM+Attention实现时间序列预测(PyTorch版)
  • 灵活就业养老保险退休后每月领多少钱
  • thinkphp 模块
  • vue项目如何启动运行
  • 升级nodejs到最新版本
  • php运行linux命令
  • 收到境外服务费可以退税吗
  • 会计怎么计算
  • 住宿费补贴
  • 公司转让后原账本怎么处理
  • 融资租赁的利息进项税可以抵扣吗
  • 其他权益工具投资是金融资产吗
  • 防伪税控开票
  • 生产企业出口转内销增值税申报表怎么填
  • 帝国cms移动端
  • 织梦怎么改网站主页
  • 一般纳税人领票提交什么资料
  • 建筑公司预收工程款
  • 银行怎么划分标准
  • 捐赠固定资产怎么入账
  • 水电费的收据单怎么写
  • 委外研发费用如何界定
  • 行政事业单位拨付给企业的财政补助款用交增值税吗
  • 进项税额转出再转入
  • 机票行程单改签费抵扣 税务局
  • 设备维保费如何计算
  • 如何判断企业实际控制人
  • 账本页面设置
  • sql server如何进行安全设置
  • windowssystem32configsystem下载
  • win8无线网络连接不上
  • linux nohup命令详解
  • win1020h2正式版
  • win10系统预览版
  • win8系统打不开exe
  • angular的ngif
  • 原生js实现promise
  • unity中ngui
  • Python 'takes exactly 1 argument (2 given)' Python error
  • python条件怎么算合法
  • 广州市地方税务局官网
  • 研发费用加计扣除2022政策
  • 汉中税务大厅电话是多少
  • 广州代理记账公司注册
  • 亳州自来水缴费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设