2
我有以下情形:Qpid - 負載均衡的消息對消費者有不同的性能特點
我推100個消息2名消費者共享的隊列。兩個訂閱者都以預獲取模式和顯式模式訂閱隊列。在處理每條消息之後,每個訂閱者接受消息以將其從隊列中刪除。僞代碼看喜歡的是:
OnMessageTransfer(message) :
DoSomethingWithMessage(message)
Session.MessageAccept(message)
的消息是正確的負載平衡,每個消息被處理一次,只有一次,但我們發現,它並沒有考慮到每個消費者的處理時間。例如,讓我們假設消費者A正在花費50ms來處理消息,而消費者B正在花費5秒鐘。理想情況下,消費者B應該開始處理1條消息,同時消費者A應該處理另外99條消息。但是,發生的情況是消費者B將在50秒內實際處理25條消息,而消費者A將在約4秒內處理另外75個消息並且將閒置。客戶端API似乎預取了這些消息,這在這種情況下顯然是非最優的。
我們該如何解決這個問題?
我們使用Qpid CPP 0.5和完全託管的C#0-10客戶端API,而不是CPP綁定(但我的理解是,這種行爲是未鏈接到API的實現)
的問候,
Julien
大自答案! –