2010-05-08 222 views
2

我遇到了一個問題,我在共享模式下設置了一個隊列,並且多個消費者綁定了它。問題是,似乎rabbitmq正在序列化消息,也就是說,一次只能有一個消費者運行。我需要這是平行的,但是,我似乎無法弄清楚如何。RabbitMQ從多個消費者隊列序列化消息

每個消費者都在自己的過程中運行。隊列中有很多消息。我正在使用py-amqplib與RabbitMQ進行交互。

有什麼想法?

回答

0

預取(QOS)如何?在小的隊列中,我通過聲明隊列,獲取當前可用消息的數量,附加消費者,消費消息,然後在消息數量消耗後關閉消息,從而給出並行性的外觀。在不確認消息的情況下關閉通道會使消息可供其他消費者使用,並且足夠快地輪詢隊列,並且可以使用並行解決方案。

0

參考,首選的AMQP模型似乎是一個連接消費者隊列。您應該創建一個「直接」交換,並就您的消費者都會傾聽的路由密鑰達成一致。然後,連接的每個消費者應該創建一個專用的,私有的,不耐久的隊列,並使用queue_bind()將其隊列訂閱到與交換機上的公共路由密鑰匹配的消息。使用這種安排,我的工作人員正在並行操作,而不是將他們的操作序列化!