![](/img/trans.png)
[英]Nearly no performance gain between single and multiple consumers using LMAX Disruptor / how to decode many UDP packets properly
[英]Lmax Disruptor, many consumers - how make consumer take only messages of particular kind and proceed independently?
我計划在我的破壞者中擁有許多並行的消費者。
我需要每個使用者僅使用針對他們的消息。
例如,我有A,B,C類型的消息,並且我有類似的緩沖區
#1 - type A, #2 - type B, #3 - type C, #4 - type A, #5 - type C, #6 - type C, (and so on)
我有每種類型的消費者。 我如何才能使A的使用者接受消息1和4,類型B-消息2,C-消息3、5、6?
重要說明:我希望處理過程獨立。 消費者不應被束縛,每個人獨立地行進緩沖區。 如果“ A型消費者”比“ C型消費者”慢,則“ C型”消費者對#6的處理可能早於類型A的#1參與。
感謝您提供有關如何使用LMAX干擾器配置的說明。
典型的模式是使用序列號-假設您有4個事件處理程序掛在中斷程序上; 如果給每個人一個唯一的號碼,則可以選擇是否接受該消息:
void onEvent(T event, long sequence, boolean endOfBatch) throws Exception {
// instanceNumber could be assigned in a constructor
if ((sequence % 4) != instanceNumber)
// message isn't for me
return;
}
// do my thing
}
將干擾程序配置為使用一種類型的對象,但創建多個干擾程序,每種對象類型一個。 在上述情況下,將有三個獨立的破壞者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.