首页 文章

RabbitMQ - 使用多个队列

提问于
浏览
1

我正在使用Python,RabbitMQ和Pika .

我有多个消费者和队列 . 我希望一个消费者从每个队列中获取消息 . 假设我有2个消费者和3个队列 . 我希望我的每个消费者都能从队列号1,2和3中读取消息 .

我已经设法使用basic_get:

basic_get(队列1)

basic_get(队列2)

basic_get(队列3)

=>从队列1获取一条消息,从队列2获取一条消息,从队列3获取一条消息,然后重复 .

“问题”是我想使用basic_consume来设置qos(让队列每次都推送n条消息) . 我想从队列1获取n条消息,然后从队列2获取n条消息,从队列3获取n条消息,然后返回队列1,依此类推 . 我不想从队列1中消耗所有内容,然后从第2个中消耗所有内容,...

我还没有找到一种方法来为多个队列实现basic_consume . 在我的情况下是否可以实现basic_consume?

另外,使用basic_consume时是否需要线程?它在RabbitMQ中发送消息时调用函数 . 但据我所知,这是一个倾听者 . 所以我在听的时候什么也做不了 . 使用线程有助于在收听新消息时处理任务,对吗?

谢谢 .

1 回答

  • 0

    设置prefetch for the consumer,你应该能够做到这一点 .

    我不确定具体的Pika代码,但该文档中的示例显示如下:

    channel.basicQos(10); // Per consumer limit
    channel.basicConsume("my-queue", false, consumer);
    

    关于线程......这取决于您的具体应用需求 . 通常,增加流程实例数而不是使用线程更容易 . 但是使用线程肯定是在单个进程中并行处理消息的有效方法 .

相关问题