我有一个问题,我在共享模式下设置了一个队列,并绑定了多个使用者。 问题在于,rabbitmq似乎正在序列化消息,即一次只能运行一个使用者。 我需要将此保持平行,但是,我似乎无法弄清楚该如何做。

每个使用者都在自己的进程中运行。 队列中有很多消息。 我正在使用py-amqplib与RabbitMQ接口。

有什么想法吗?

#1楼 票数:0

预取(QOS)呢? 在小型队列上,我通过声明队列,获取当前可用消息数,附加使用者,使用消息并在消息数量耗尽后将其关闭来给出并行化的外观。 在不确认消息的情况下关闭通道会使消息可供其他使用者使用,足够快地轮询队列,您可能会得到类似的解决方案。

#2楼 票数:0

再说一遍,首选的AMQP模型似乎是每个连接的消费者队列。 您应该创建一个“直接”交换,并同意您的消费者都将收听的路由密钥。 然后,每个连接的使用者都应创建一个排他的,私有的,非持久的队列,并使用queue_bind()将他们的队列订阅与交换​​机上与公共路由密钥匹配的消息。 通过这种安排,我的工人将可以并行操作,而不是将其操作序列化!

  ask by Refefer translate from so

未解决问题?本站智能推荐:

2回复

RabbitMQ 非阻塞消费者

我在 Python 中使用 RabbitMQ 来管理生产者和多个消费者之间的多个队列。 在 RabbitMQ 网站(路由模型)中的示例中,消费者被阻止。 这意味着每当队列中有新的“任务”时,它们都会在 start_sumption() 上停止并执行回调函数。 我的问题是:我如何以一种他仍在等待任务
1回复

RabbitMQ-Basic_qos函数以及如何使其最大化

我一直在使用RabbitMQ来构建分布式Web搜寻器。 到目前为止,我一直在使用此函数,以便每个函数一次仅收到1个请求。 据我了解,无论通道有多少个队列,它总是一次只能处理1条消息。 有没有一种方法可以最大化一次处理的消息数量? 我不想将此prefetch_count设为静态,
1回复

在芹菜中将任务排队的时间使我的应用程序陷入困境-如何并行化.delay()?

我的celery + Rabbitmq应用程序存在一个主要问题,该问题是排队工作所花的时间比我的工人完成工作所花费的时间更长。 无论我启动了多少台计算机,排队时间总是会超过任务时间。 这是因为我在一台计算机上有一个celery_client脚本,按顺序执行所有排队(调用task.dela
1回复

Rabbitmq排队多个消费者

我有多个使用者正在同一个队列上轮询,并每隔X秒检查一次队列,基本上X秒钟后,可能至少有两个使用者可以同时启动basic.get 。 问题是: 1.是否至少有两个消费者同时可以收到相同的消息? 2.根据我的理解,只有basic_ack会从队列中删除一条消息,所以假设我们有以下情形:
3回复

RabbitMQ:从队列为多个消费者分派固定消息

有没有办法限制 RabbitMQ Queue 只将固定数量的消息从 Queue 分派给消费者? 我有 2 个队列 Q1 和 Q2 以及 10 个消费者。每个消费者都可以处理来自 Q1 和 Q2 的消息。在任何给定时间,只有 2 个消费者应该处理来自 Q2 的消息。所有 10 个消费者都可以同时处理
3回复

Spring AMQP RabbitMQ如何使两个并行的使用者不会同时抓取相同的任务?

我有两个系统与RabbitMQ集成在一起。 背景 客户端从Spring-AMQP出站网关向RabbitMQExchange发送多个请求消息,rabbitmq- DirectExchange将使用循环调度将这些消息分发给多个Worker(这些worker独立于不同的桌面 ,这些
1回复

rabbitmq 队列上有多个消费者-只有一个消费者收到消息

我实现了多个消费者,他们从单个队列中获取消息,我使用类似于此示例的东西来执行此操作,除了我在无限循环中执行 basic.get 以进行轮询。 知道如何防止所有消费者之间发生竞争,因为只有一个消费者会收到消息,而另一个消费者将继续进行轮询,直到另一条消息到来? 我尝试实现一个逻辑,在该逻辑中,一旦我
1回复

将RabbitMQ的流数据并行加载到Postgres

我对Node.js还是有些陌生,所以我对并行处理并行I / O操作的方式并不熟悉。 我正在计划一个Node.js应用程序以将流数据从RabbitMQ加载到Postgres。 这些负载将在系统运行期间发生,因此不是大负载。 我希望开始时的吞吐量要求相当低(也许每分钟50-100条记录