转自http://blog.xiamingxing.com/archives/262

基于node.js与kue搭建消息队列

xiamingxingnodejs0 Comment

背景

在计算机科学中,消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式。

在高并发或者在计算资源有限的情况下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。

简介

kue是基于node.js构建的,redis支持的优先级任务队列。

安装

Latest release:

$ npm install kue

Master branch:

$ npm install http://github.com/Automattic/kue/tarball/master

特性

https://github.com/Automattic/kue

遇到的问题

一、MaxListenersExceededWarning

kue支持多进程及并发处理,当这两种策略同时启动时,会导致listener数急剧膨胀,导致以上错误,可以通过设置process.setMaxListeners(0);来解决

二、队列消息可以正常生产、消费,但是会触发failed事件,导致频繁重试

var kue = require('kue'), queue = kue.createQueue();queue.process('email', function(job, done){email(job.data.to, done);
});function email(address, done) {if(!isValidEmail(address)) {//done('invalid to address') is possible but discouragedreturn done(new Error('invalid to address'));}// email send stuff...done();
}

queue.process的回调函数执行时,会在参数中传递done函数。done函数可以用来判断一条消息是否处理完成及结果如何。例如:done(x),如果x不为空,则表示本条消息处理失败,producer进入消息失败的处理逻辑。

三、Typescript环境,导入ioredis时遇到的坑

需要通过如下方式导入:

import IORedis = require('ioredis');

基于NODE.JS与KUE搭建消息队列[转]相关推荐

  1. node.js服务端搭建电影网站

    movieService[电影网站]服务端 基于node.js的express搭建的电影网站后台服务器,数据库为MongoDB,具有用户登录.注册.权限管理.专栏文章.点赞.电影推荐及增删改查管理的完 ...

  2. 使用Node.js+Socket.IO搭建WebSocket实时应用

    Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. 作 ...

  3. Node.js毕业设计——基于Node.js+JavaScript+MongoDB的供求信息网站设计与实现(毕业论文+程序源码)——供求信息网站

    基于Node.js+JavaScript+MongoDB的供求信息网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Node.js+JavaScript+MongoDB的供求信息网站设计 ...

  4. 认识Web前端、Web后端、桌面app和移动app新开发模式 - 基于Node.js环境和VS Code工具...

    认识Web.桌面和移动app新开发模式 - 基于Node.js环境和VS Code工具 一.开发环境的搭建(基于win10) 1.安装node.js和npm 到node.js官网下载安装包(包含npm ...

  5. 大文件分片上传前端框架_基于Node.js的大文件分片上传

    基于Node.js的大文件分片上传 我们在做文件上传的时候,如果文件过大,可能会导致请求超时的情况.所以,在遇到需要对大文件进行上传的时候,就需要对文件进行分片上传的操作.同时如果文件过大,在网络不佳 ...

  6. posix自己搭建消息队列_蘑菇街消息系统上云实践

    小编又来啦-本周要推荐给大家的是一篇跟中间件上云相关的技术文章,这里面详细的记录了,蘑菇街自研消息系统上云的全过程,也是市面上开放出来为数不多的企业自研组件上云实践.有相关需求的同学可以好好学习下. ...

  7. linux系统宝塔安装nodejs,基于debian宝塔面板安装nodebb – 一款基于Node.js的论坛程序...

    NodeBB论坛程序是基于 Node.js构建,并支持Redis,MongoDB或PostgreSQL数据库.它利用Web套接字进行即时交互和实时通知.NodeBB具有许多现成的现代功能,例如社交网络 ...

  8. Node.js的环境搭建方法和 npm 的使用方法

    Node.js的环境搭建方法和 npm 的使用方法 Node.js 环境的搭建 Node.js 介绍 Node.js 下载 配置Node.js node.js 测试 npm(包管理器)使用方法 npm ...

  9. 基于Node.js + jade + Mongoose 模仿gokk.tv

    原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 关于gokk 大学的娱乐活动基本就是在寝室看电影了→_→,一般都会选择去goxiazai.cc上看,里面的资源多,质量高 ...

最新文章

  1. 基于Dlib、OpenCV开发人脸识别程序的开发建议
  2. git error(win下)
  3. 微信小程序swiper禁止用户手动滑动
  4. PYG教程【四】Node2Vec节点分类及其可视化
  5. 7张图揭晓RocketMQ存储设计的精髓
  6. set注意点map遍历
  7. gsoap使用心得!
  8. Flink java.lang.NoClassDefFoundError: org/apache/flink/api/common/functions/FlatMapFunction
  9. 【实例解析】某集团BI决策系统建设方案分享
  10. iview 自定义时间选择器组件_视图更新科技发布View UI组件库(即 iView 4.0),超过50项更新...
  11. 学成在线-处理常见视频格式avi,mp4,mov,rmvb,flv
  12. pthread_getspecific和pthread_setspecific使用:同一线程内的各个函数间共享数据
  13. python模拟类蠕虫--蠕虫初探
  14. 简单一招能让你的浏览器下载速度提升几十倍,从此弃用IDM等下载器
  15. 信息技术的分类方法有哪些?
  16. 删除maven仓库中的lastUpdated
  17. 工信部的小伙伴,还没过上年
  18. java web常用且实用的网站收集
  19. < Linux >:Linux 进程概念 (1)
  20. 支付宝 福卡 出花花卡 敬业福 的 福图片

热门文章

  1. three.js和D3.js
  2. 篱笆家装宝典之四——瓷砖
  3. python记忆式键入,在Python编程模式下输入命令”print(100+200)“执行的结果是()
  4. linux RAID管理与恢复误删除文件
  5. img显示保存在服务器中的图片,img显示服务器图片不显示
  6. 基于4412的dm9000驱动移植
  7. Pycharm安装与设置
  8. 计算机系统:基本知识
  9. .locked勒索病毒来势汹汹该怎么办?
  10. python代码什么时候用单引号_Python 中的单引号和双引号有什么区别?