队列选型,大家帮支个招
发布于 8 年前 作者 xuwenfei886 3970 次浏览 来自 问答

我先说一下需求背景:server会不定时去连接一个git server 创建repository 或是push commits(不考虑有冲突 合并冲突),需要选择一个队列的库去储存执行这些jobs。 首先我先说一下我看的几个库:

RabiitMQ 我感觉有点太大了对于我这个需求来说。而且还需要创建server。维护这个MQ server。我感觉维护成本比较高 学习成本也比较大

KUE 感觉这个可以用,库比较成熟 ,使用也相对简单。而且可以和server的redis 一起用。

async 这个说起来也不算个队列的库,只是有个queue的方法 支持1000个job以内。

其他的暂时没有了,正在找中。。

Server是nodejs的 使用的是Expressjs4.0。 请问哪个比较适合我,或是不在此列你们用过比较推荐的也行。 多谢!!!

8 回复

你要先想明白引入队列要解决什么问题。除了队列还有什么解决方案,队列的好处是什么?

过去一年很多问我队列选型的,我一般都让他们回答这几个问题。

根据你的场景,相对比较简单,直接使用redis的list队列作为任务队列就可以满足需求。

@stonephp 如果在我这个需求里,我感觉发布不同的git命令请求 就是不同的provider, 不同的git repository 就是不同的customer。用队列自然是想对我的作业进行发布订阅以及作业并行的负载均衡。

@xuwenfei886 我的思路是能简单的就不复杂化,你这个在我看来不需要队列,利用hook就解决问题了。 队列有个最大的优势就是多消费者,尤其是同一条数据可以有多个消费者,不同的消费者各自做自己的事情。

你这个需求我感觉就是根据用户的请求触发一些git的命令。感觉不需要这么复杂。

@stonephp 虽然我的需求不是那么复杂。但是我感觉hook解决不了我的问题。首先是时序性,很容易就发生阻塞,再者git push的文件的版本问题。压入到队列中的请求,传输的文件是不一样的,需要暂时也存在队列中,所以我最初的设想是queue可以连接redis每个请求过来时把对应不同版本的各种文件先存在redis里持久化一下,然后用队列去按顺序去push。

用redis 队列

初期,有啥现成的用啥,我们就一个mongo,直接用mongo当队列

@xuwenfei886 了解,那你选型用一个你熟悉的,简单一些点。方便你调试的就可以了。2013年我做一个工程的时候,自己用mysql的表做队列的存储。当时主要考虑的就是方便我调试。

回到顶部