2013-03-28 28 views
0

我有一個持久的隊列,持有持久的消息。消息以每秒大約10條消息的速率進入隊列。兔子MQ:提高隊列沖洗速度

客戶端無法以該速率獲取這些消息。結果服務器上的隊列不斷增長。

每條消息都小於1 KB,並且在服務器和我的機器之間有一條健康的2 Mbps線路。使用網絡監控工具,我發現它幾乎沒有使用任何帶寬。

客戶是做什麼用的消息,截至目前,只是將它們打印在客戶端控制檯,以便處理時間幾乎爲0。

其他一些細節: 我使用的是Java客戶端。 我已經設置客戶端預取10000條消息。 (也嘗試使用默認值) 往返時間大約爲350毫秒。 消息被單獨確認。

可用資源未充分利用,我認爲每秒10封郵件幾乎沒有任何負載。我如何加快速度,讓隊列中的消息更快地傳遞給客戶端。可能使用某種配料。

回答

1

如果您每隔350毫秒褻瀆消息,我預計消費者可能會達到每秒約1/0.35或約2.9條消息。但是,協議可能並不那麼高效,它可能需要兩次往返服務器才能確認該消息並獲得下一個消息。即每秒1.4個消息可能更現實。

350毫秒的往返程度非常高,您可以在世界各地再次回來,因此一個簡單的解決方案可能不適合您。例如倫敦 - >紐約 - >東京 - >倫敦。

我會嘗試有一個經紀人本地到您的客戶端。這種方式往返於客戶和當地經紀人之間。

+0

我有一個10000條消息的預取。所以服務器可以在不等待ACK的情況下推送更多的消息。對? – Dojo 2013-03-28 10:42:57

+0

我會檢查設置適用於這種情況。即使可以預取,也可能需要與經紀商確認是否提交更改。 – 2013-03-28 11:38:00