【问题标题】:RabbitMQ: Consuming only one message at a time from multiple queuesRabbitMQ:一次只使用来自多个队列的一条消息
【发布时间】:2023-03-14 10:15:01
【问题描述】:

我正在尝试与 RabbitMQ 中的多个队列保持连接。每次我从其中一个队列中弹出一条新消息时,我都想生成一个外部进程。

此过程需要一些时间来处理消息,并且我不想开始处理来自该特定队列的另一条消息,直到我之前弹出的消息完成。如果可能的话,我不想保留一个进程/线程只是为了等待外部进程完成并确认服务器。理想情况下,我想确认这个外部进程,可能会传递一些标识符,以便它可以连接到 RabbitMQ 并确认消息。

是否可以用 RabbitMQ 设计这个系统?如果这与答案相关,我正在使用 Python 和 Pika。

谢谢!

【问题讨论】:

    标签: python rabbitmq amqp pika


    【解决方案1】:

    RabbitMQ 可以做到这一点。

    您只想在准备就绪时从队列中读取数据 - 因此启动一个可以生成外部进程并观察它的线程,然后在进程完成后从队列中获取下一条消息。然后,您可以让多个线程并行运行以管理多个队列。

    我不确定你想要一个 ack 做什么?如果 RabbitMQ 太满(因为它的元素被处理得太慢/根本不处理),你是否试图阻止 RabbitMQ 向该队列添加新元素?当您将消息添加到队列时,可能有一种方法可以做到这一点 - 在添加项目之前,请检查以确保该队列中已经存在的消息数量没有“远远大于”所有队列的平均值?

    【讨论】:

    • 我试图在不启动外部进程的情况下做到这一点,但你说得对,我应该在准备好后从队列中弹出,而不会太复杂。
    猜你喜欢
    • 2016-04-24
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2020-03-17
    • 2015-12-10
    相关资源
    最近更新 更多