使用 Sqlite 作为消息队列


Author: yifei / Created: Aug. 6, 2018, 11:08 p.m. / Modified: Aug. 7, 2018, 7:23 a.m. / Edit

最近在写一个爬虫,需要一个消息队列来实现分布式的抓取。这个消息队列需要一些特性:

  1. 插入队列
  2. 列出所有域名(key)
  3. 按照域名(key)查询出列

普通的消息队列一般只支持 push/pop/ack 语义,并没有按照不同的 key(在这里是域名)来选择出队的功能。当然有人可能说了,那么我把每一个 key 都应用一个消息队列的 topic 不就行了?答案是不太现实,因为 key 的数量可能是上万的,生成这么多的 topic 一般的消息队列是无法实现的。

这时候想到了利用 sqlite 来作为基础实现一个消息队列。考虑到性能问题,sqlite 支持把数据库完全放在内存中。

实现

插入队列


有任何问题可以发邮件到 kongyifei (at) gmail.com 讨论