我正在使用Python,RabbitMQ和Pika。RabbitMQ - 消耗多個隊列
我有多個消費者和隊列。我想讓一個消費者從每個隊列中獲取消息。 假設我有2個消費者和3個隊列。我希望我的每一個消費者的閱讀從隊列號碼1,2和3
的消息我已經管理與basic_get這樣做:
basic_get(隊列1)
basic_get(隊列2)
basic_get(queue3)
=>從隊列1中獲取一條消息,其中一條來自隊列2,另一條來自隊列3,然後重複。
「問題」是我想使用basic_consume來設置qos(讓隊列每次推送n條消息)。我想從隊列1中獲得n條消息,然後從隊列2獲得n條消息,從隊列3獲得n條消息,然後返回到隊列1,依此類推。我不想消耗全部從隊列1,然後全部從第二,...
我還沒有找到一種方法來實現多個隊列的basic_consume。在我的情況下可以實現basic_consume嗎?
另外,當使用basic_consume時,我需要線程嗎?它在RabbitMQ中發送消息時會調用函數。但據我所知,這是一位聽衆。所以我在聽的時候什麼也做不了。使用線程有助於在收聽新消息的同時處理任務,對嗎?
謝謝。
請注意,跨線程共享Pika連接不是線程安全的 - 每個線程都必須有自己的連接:http://pika.readthedocs.io/en/latest/faq.html –