簡體   English   中英

Lmax Disruptor,許多消費者-如何使消費者僅接收特定種類的消息並獨立進行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM