我正在使用RabbitMQ来处理大量数据。我有三种类型的消费者:downloader, extracter
和importer
。它们必须按照我上面提到的顺序顺序工作,例如downloader
将下载一堆文件,传递给extracter
,在提取它们之后,importer
应该将文件中的信息导入到DB中。我的问题是如何实现这种功能?这是将邮件从extracter
(downloader
)放入consumer
队列的好方法吗?或者还有另一个解决方案吗?
答案 0 :(得分:1)
这似乎是一个使用三个独立队列的好例子。您有一个download
队列,一个extraction
队列和一个import
队列。
每个队列的使用者将负责在完成其工作后将消息放入管道中的下一个队列。
所以工作流程看起来像这样(以queue.
为前缀的队列,使它们显而易见):
??? -> queue.download
queue.download -> downloader -> download complete -> queue.extraction
queue.extraction -> extracter -> extraction complete -> queue.import
queue.import -> importer -> import complete -> ???
有几点需要注意:
download
队列中来解决问题。compression
步骤(例如)?让下载程序将消息放入compression
队列,然后在该步骤完成后,将消息放入extraction
队列。downloader
实例,将消息从相同的工作队列中拉出来。希望这有帮助!