场景:爬虫抓取任务出现积压的时候往往是抓取策略出现了一些变化,此时需要人为干预恢复抓取,但是此时会积压过多存量信息。
比如积压 10k 条,日进 5k 条,每小时能处理 1k 条,那么比如服务挂掉两天之后开始恢复,队列里面就积压了 20k 条,预计的恢复时间大概是一天。(恢复:最新今队列的数据能在比较短的时间被处理)
如果依赖消息队列,我能想到这两个思路:
- 把存量消息都清掉,然后按照一定速率慢速回放插入队列
- 把存量消息都清掉,把所有的存量消息以低优先级插入队列
感觉都需要人工干预队列的行为,我想的是有没有一种类似堆栈的中间件,实现 LIFO,永远处理的是最新进来的消息,处理完之后开始尝试旧的存量的消息,直到都消费完为止?