RabbitMQ:一次只使用来自多个队列的一条消息
RabbitMQ: Consuming only one message at a time from multiple queues
我正在尝试与 RabbitMQ 中的多个队列保持连接。每次我从其中一个队列中弹出一条新消息时,我都想生成一个外部进程。
此过程将花费一些时间来处理消息,并且我不想在我之前弹出的消息完成之前开始处理来自该特定队列的另一条消息。如果可能的话,我不想保留 process/thread 只是为了等待外部进程完成并确认服务器。理想情况下,我想在此外部进程中进行确认,可能会传递一些标识符,以便它可以连接到 RabbitMQ 并确认消息。
这个系统可以用RabbitMQ设计吗?如果这与答案相关,我正在使用 Python 和 Pika。
谢谢!
RabbitMQ 可以做到这一点。
您只想在准备就绪时从队列中读取 - 因此启动一个可以生成外部进程并观察它的线程,然后在进程完成时从队列中获取下一条消息。然后,您可以并行使用多个线程 运行 来管理多个队列。
我不确定你想要 ack 是为了什么?您是否试图阻止 RabbitMQ 在该队列太满时向该队列添加新元素(因为它的元素也正在处理 slowly/not )?当您将消息添加到队列时,可能有一种方法可以执行此操作 - 在添加项目之前,请检查以确保该队列中已有的消息数不是 "much greater than" 所有队列的平均值?
我正在尝试与 RabbitMQ 中的多个队列保持连接。每次我从其中一个队列中弹出一条新消息时,我都想生成一个外部进程。
此过程将花费一些时间来处理消息,并且我不想在我之前弹出的消息完成之前开始处理来自该特定队列的另一条消息。如果可能的话,我不想保留 process/thread 只是为了等待外部进程完成并确认服务器。理想情况下,我想在此外部进程中进行确认,可能会传递一些标识符,以便它可以连接到 RabbitMQ 并确认消息。
这个系统可以用RabbitMQ设计吗?如果这与答案相关,我正在使用 Python 和 Pika。
谢谢!
RabbitMQ 可以做到这一点。
您只想在准备就绪时从队列中读取 - 因此启动一个可以生成外部进程并观察它的线程,然后在进程完成时从队列中获取下一条消息。然后,您可以并行使用多个线程 运行 来管理多个队列。
我不确定你想要 ack 是为了什么?您是否试图阻止 RabbitMQ 在该队列太满时向该队列添加新元素(因为它的元素也正在处理 slowly/not )?当您将消息添加到队列时,可能有一种方法可以执行此操作 - 在添加项目之前,请检查以确保该队列中已有的消息数不是 "much greater than" 所有队列的平均值?