CNode

关于node.js消息队列的问题

Bbeiyio发布于13 年前最后回复9 年前22 回复37221 浏览0 收藏

以前做服务端程序总是少不了去做消息的队列缓冲。学习了node挺久了。一直在研究用node.js去做服务( tcp的协议 socket)但是始终没有看到类似消息队列的东西~不知道何故。希望大神们给解答下.特别是高并发的时候

查看回复

回复 (22)

C
cnwhy#1·11 年前

试试这个基于Promise做的队列. https://github.com/cnwhy/queue-fun

C
chloe#2·11 年前
J
joesonw#3·11 年前
引用 cnwhy试试这个基于Promise做的队列. https://github.com/cnwhy/queue fun

@cnwhy 我在想 var Queue = new queue-fun.Queue() 是怎么把 减号 用出来的

T
Telanx#4·9 年前

rabbitmq

J
jiyinyiyong#6·13 年前

消息队列是 [zeromq][zeromq] 之类工具么? [zeromq]: https://github.com/JustinTulloss/zeromq.node

B
beiyio#7·13 年前
引用 jiyinyiyong消息队列是 [zeromq][zeromq] 之类工具么? [zeromq]: https://github.com/JustinTulloss/zeromq.node

不是啊,就是为了增加接收消息的速度,将消息先缓冲起来,然后一个一个处理

B
beiyio#8·13 年前
引用 jiyinyiyong消息队列是 [zeromq][zeromq] 之类工具么? [zeromq]: https://github.com/JustinTulloss/zeromq.node

不是啊,就是为了增加接收消息的速度,将消息先缓冲起来,然后一个一个处理

Y
ym1623#9·13 年前
引用 jiyinyiyong消息队列是 [zeromq][zeromq] 之类工具么? [zeromq]: https://github.com/JustinTulloss/zeromq.node

@beiyio node.js本身就是事件驱动的语言,整个队列处理加载方式也都是通过一个计时器setTimeout/setInterval 循环调用执行整个队列,一个队列就像一个一栋楼房,要建立起一栋楼你要建立起规则后可以按照先后顺序架构.有一个node kue的包,你可以npm install kue了解一下,地址:https://github.com/LearnBoost/kue

B
beiyio#12·13 年前

感谢各位的答复,受教了

C
czbabl#13·13 年前

nodejs实现消息队列

Y
yorkie#14·13 年前
S
shmnh#15·13 年前

有async包,里面有个queue方法,实现了队列机制,不知道适合不适合你的需求。一般业务量,压入1000个任务应该没问题,你可以试下。

I
ijse#17·13 年前

朴大的 Bagpipe 好像蛮适合需求的~~

J
jimokanghanchao#18·13 年前

nodejs和消息队列没有必然联系吧 根据实际需要,你需要把nodejs收到的请求写消息队列的话,那你就用呗 不太明白楼主的意思.

S
seasonx4#19·13 年前

研究下NET模块就知道,新建连接/某个连接收到新信息后调用处理函数,这些都是硬消耗,你队不队列它都只能承受小于1000次/秒的并发;不相信可以自己做压力测试

为了一个一个处理而把消息队列起来这是毫无意义的,本来就是1个1个处理的,因为是单线程; 你不队列V8也会队列,你再队列一次那就是..... 先弄清楚JS的运行机制...

不用CLUSTER之类的话,1000并发已经是非常大的数字了,这么大的业务量应该用其它成熟的解决方案

S
seasonx4#20·13 年前

补充一下1000并发上下和CPU有关,但差不多就是这个数量级

C
cyrilluce#21·13 年前
引用 seasonx4研究下NET模块就知道,新建连接/某个连接收到新信息后调用处理函数,这些都是硬消耗,你队不队列它都只能承受小于1000次/秒的并发;不相信可以自己做压力测试 为了一个一个处理而把消息队列起来这...

赞同此观点,在单线程异步模式下,只用全速去响应事件就行了。如果还是慢,那表明要么是性能根本不足,要么表示设计有问题,导致事件响应过慢,阻塞了后续事件。

J
jimokanghanchao#22·13 年前
引用 seasonx4研究下NET模块就知道,新建连接/某个连接收到新信息后调用处理函数,这些都是硬消耗,你队不队列它都只能承受小于1000次/秒的并发;不相信可以自己做压力测试 为了一个一个处理而把消息队列起来这...

我理解的是单纯的用nodejs尽可能多的hold住连接,然后把消息扔进专门的消息队列, 这个消息队列需要被其它服务拿去用,nodejs本来就没啥事情做.

参与回复
登录后即可参与回复。登录