RabbitMQ的使用
在爬取数据的过程中,可能需要一些进程间的通信机制,例如下面三个。
-
一个进程负责构造爬取请求,另—个进程负责执行爬取请求。
-
某个数据爬取进程执行完毕,通知另外一个负责数据处理的进程开始处理数据。
-
某个进程新建了一个爬取任务,通知另外一个负责数据爬取的进程开始爬取数据。
为了降低这些进程的耦合度,需要—个类似消息队列的中间件来存储和转发消息,实现进程间的通信。有了消息队列中间件之后,以上各机制中的两个进程就可以独立执行,它们之间的通信则由消息队列实现。
-
一个进程根据需要爬取的任务,构造请求对象并放入消息队列,另一个进程从队列中取出请求对象并执行爬取。
-
某个数据爬取进程执行完毕,就向消息队列发送消息,当另一个负责数据处理的进程监听到这类消息时,就开始处理数据。
-
某个进程新建了一个爬取任务后,就向消息队列发送消息,当另一个负责数据爬取的进程监听到这类消息时,就开始爬取数据。
那这个消息队列怎么实现呢?业界比较流行的实现有 RabbitMQ、RocketMQ、Kafka 等,其中 RabbitMQ 作为一个开源、可靠、灵活的消息队列中间件备受青睬,本节我们也来了解一下它的用法。
我们在前几节了解了一些数据存储库的用法,它们几乎都用于持久化存储数据。本节介绍的是一个消息队列中间件,它虽然主要应用于数据消息通信,但由于它也具备存储信息的能力,所以将其放在本章介绍。 |