RabbitMQ的使用

在爬取数据的过程中,可能需要一些进程间的通信机制,例如下面三个。

  • 一个进程负责构造爬取请求,另—个进程负责执行爬取请求。

  • 某个数据爬取进程执行完毕,通知另外一个负责数据处理的进程开始处理数据。

  • 某个进程新建了一个爬取任务,通知另外一个负责数据爬取的进程开始爬取数据。

为了降低这些进程的耦合度,需要—个类似消息队列的中间件来存储和转发消息,实现进程间的通信。有了消息队列中间件之后,以上各机制中的两个进程就可以独立执行,它们之间的通信则由消息队列实现。

  • 一个进程根据需要爬取的任务,构造请求对象并放入消息队列,另一个进程从队列中取出请求对象并执行爬取。

  • 某个数据爬取进程执行完毕,就向消息队列发送消息,当另一个负责数据处理的进程监听到这类消息时,就开始处理数据。

  • 某个进程新建了一个爬取任务后,就向消息队列发送消息,当另一个负责数据爬取的进程监听到这类消息时,就开始爬取数据。

那这个消息队列怎么实现呢?业界比较流行的实现有 RabbitMQ、RocketMQ、Kafka 等,其中 RabbitMQ 作为一个开源、可靠、灵活的消息队列中间件备受青睬,本节我们也来了解一下它的用法。

我们在前几节了解了一些数据存储库的用法,它们几乎都用于持久化存储数据。本节介绍的是一个消息队列中间件,它虽然主要应用于数据消息通信,但由于它也具备存储信息的能力,所以将其放在本章介绍。

RabbitMQ的介绍

准备工作

基本使用

随用随取

优先级队列

队列持久化

实战

总结

本节介绍了 RabbitMQ 的基本使用方法,有了它,爬虫进程之间的通信就变得非常简单了。后文我们还会基于 RabbitMQ 实现分布式爬取的实战,所以本节的内容需要好好掌握。