2012-10-09 42 views

回答

5

假設你有你的隊列32級的消息,你的目的是讓隊列中的所有郵件,如果你調用的GetMessage(),你將需要做出32個呼叫從而讓所有的消息,如果你調用其中32個API交易GetMessages(32)只需一次調用即可獲得所有消息,因此只需1次事務。比

更多,我認爲這取決於你的應用程序。例如,我一直在玩這個功能,我決定我的應用程序的工作者角色(我們稱之爲「消費者」)實例一次可以處理4條消息。在這種情況下,最好使用GetMessages(4)從隊列中獲取4條消息,並確保消費者實例處理的4條消息對其他調用者不可見。如果我利用的GetMessage(),那麼我將不得不作出這一呼籲的4倍,如果我利用的getMessages(32),那麼我的消費情況也只是坐在這些額外28個消息和其他消費情況不會得到有機會處理這些消息。

+0

謝謝,但你衡量調用4倍的GetMessage而不是一分(4)的getMessages的開銷?我想知道是否會有真正的世界性差異。 – user1662812

+0

我還沒有做到這一點。我的猜測是開銷會是響應大小。您從存儲系統中獲取更多數據。我能想到的其他事情是Windows Azure所花費的處理時間,我認爲這可能微不足道。 –

+1

@ user1662812真實世界的區別在於什麼?如果你在一個串行循環中調用它四次,你可能會注意到額外的延遲,因爲它是4個HTTP請求(往返存儲)而不是一個。在同一個數據中心內,由於額外調用「GetMessage」,我會說你會增加30-90毫秒的額外延遲時間。但就吞吐量而言,我不會指望有什麼區別。在CPU時間內,解析四個XML響應可能比一個更昂貴。 (高拉夫指出,還有更多的數據。) – smarx

2

恕我直言,調用的getMessages使得基於您的應用意義。如果設計的是更有效的爲我處理批量處理郵件,然後我應該讓他們分批(小消息,低開銷來處理其中之一),而是它是否需要1-5分鐘處理一個消息,那麼你最好在做GetMessage但有多個工作角色在做這項工作。

所以,這取決於

相關問題