我目前正在評估RabbitMQ來管理隊列。我想知道RabbitMQ如何管理內存中的隊列項目。RabbitMQ內存管理和複製
在此發佈商訂戶示例 http://www.rabbitmq.com/tutorials/tutorial-three-python.html
是它爲每個用戶(消費者)創建隊列?例如,如果我有兩個消費者,那麼我加倍使用內存來存儲消息?
我的印象是,如果我在一個隊列上附加多個工作人員,那麼它將成爲一個工作隊列,每個用戶都收到不同的消息。
假設我正在爲此建立聊天服務器。我是否需要爲每個消費者創建一個隊列?內存中的每條消息都會乘以連接的用戶數量?或者內存中只有一條消息,每個隊列都有指向該消息的指針。
也在主題消息的示例中。 http://www.rabbitmq.com/tutorials/tutorial-five-python.html
讓說,我有1KB的消息。那麼2隊列中有2kb內存使用情況? Q1,Q2,並說消息匹配所有綁定密鑰。
如果我添加了另一個隊列來聽,比如說說lazy.blue.*
爲Q3。那會在內存中創建一個新的隊列項嗎?並複製數據?
我不得不修復第一張圖片,我的印象是如果你將多個消費者連接到單個隊列中,消費者會得到不同的數據,因爲我希望每個消費者接收相同的數據,我必須爲每個消費者創建單獨的隊列,這是真的嗎?每個新的消費者都會將存儲在內存中的消息翻倍 我知道消息會被髮送到3隊列,但是我想知道這樣的結果,那1個消息會在內存中重複3次嗎?或者它只會被存儲一次,每個隊列都有一個指向該消息的指針? – ahmy
如果你有多個消費者然後爲一個隊列,他們將分別得到不同的消息。如果你想讓每個消費者都得到相同的我然後你需要一個消費者隊列和一個將消息轉發給每個隊列的交換機。 – robthewolf
我想你可能會誤解mq。理論上,每個隊列會有更多的內存使用量。但重要的是,每條消息都被快速消費。如果隊列中沒有很多消息,Rabbit mq的效果最好。 – robthewolf