簡體   English   中英

RabbitMQ-使用多個隊列

[英]RabbitMQ - Consume multiple queues

我正在使用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中消耗掉所有東西,然后從第二個隊列中消耗掉所有東西,...

我還沒有找到為多個隊列實現basic_consume的方法。 在我的情況下可以實現basic_consume嗎?

另外,使用basic_consume時是否需要線程? 當在RabbitMQ中發送消息時,它確實會調用一個函數。 但是據我了解,這是一個聽眾。 所以當我在聽的時候我什么也不能做。 使用線程將有助於在偵聽新消息時處理任務,對嗎?

謝謝。

為使用者設置預取 ,您應該能夠做到。

我不確定具體的Pika代碼,但是該文檔中的示例如下所示:

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

關於線程...這取決於您的特定應用程序需求。 通常,增加流程實例的數量比使用線程更容易。 但是使用線程肯定是在單個進程中並行處理消息的有效方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM