如何管理消费者';使用RabbitMQ的顺序工作?

如何管理消费者';使用RabbitMQ的顺序工作?,rabbitmq,Rabbitmq,我使用RabbitMQ来处理大量数据。我有三种类型的消费者:downloader、extracter和importer。它们必须按照我上面提到的顺序依次工作,例如,下载程序将下载一组文件,传递到提取器,在提取它们之后,导入程序应将文件中的信息导入数据库。我的问题是如何实现这种功能?这是从下载程序(消费者)将消息放入提取器队列的好方法吗?或者还有其他解决方案?使用三个单独的队列似乎是一个很好的例子。您将有一个下载队列、一个提取队列和一个导入队列 每个队列的使用者将负责在完成其工作后将消息放入管道中

我使用RabbitMQ来处理大量数据。我有三种类型的消费者:
downloader、extracter
importer
。它们必须按照我上面提到的顺序依次工作,例如,
下载程序
将下载一组文件,传递到
提取器
,在提取它们之后,
导入程序
应将文件中的信息导入数据库。我的问题是如何实现这种功能?这是从
下载程序(
消费者
)将消息放入
提取器
队列的好方法吗?或者还有其他解决方案?

使用三个单独的队列似乎是一个很好的例子。您将有一个
下载
队列、一个
提取
队列和一个
导入
队列

每个队列的使用者将负责在完成其工作后将消息放入管道中的下一个队列

因此,工作流将如下所示(队列前缀为
queue.
,以使其更为明显):

有几件事需要注意:

  • 您需要一些东西来将消息放入
    下载
    队列,以便启动
  • 您可以轻松地在管道中添加其他步骤——是否要添加
    压缩
    步骤(例如)?让下载程序将消息放入
    压缩
    队列,然后在该步骤完成后,将消息放入
    提取
    队列
  • 您可以轻松地在管道的任何阶段进行水平缩放。下载时间太长?启动更多从同一工作队列中提取消息的
    downloader
    实例

希望这有帮助

使用三个单独的队列似乎是一个很好的例子。您将有一个
下载
队列、一个
提取
队列和一个
导入
队列

每个队列的使用者将负责在完成其工作后将消息放入管道中的下一个队列

因此,工作流将如下所示(队列前缀为
queue.
,以使其更为明显):

有几件事需要注意:

  • 您需要一些东西来将消息放入
    下载
    队列,以便启动
  • 您可以轻松地在管道中添加其他步骤——是否要添加
    压缩
    步骤(例如)?让下载程序将消息放入
    压缩
    队列,然后在该步骤完成后,将消息放入
    提取
    队列
  • 您可以轻松地在管道的任何阶段进行水平缩放。下载时间太长?启动更多从同一工作队列中提取消息的
    downloader
    实例

希望这有帮助

甜甜圈,我已经开始以您上面提到的方式实现该功能。感谢您提供的更多信息和帮助!甜甜圈,我已经开始以您上面提到的方式实现该功能。感谢您提供的更多信息和帮助!
??? -> queue.download
queue.download -> downloader -> download complete -> queue.extraction
queue.extraction -> extracter -> extraction complete -> queue.import
queue.import -> importer -> import complete -> ???