簡體   English   中英

BatchEventProcessor LMAX干擾模式的作用

[英]Role of BatchEventProcessor LMAX Disruptor Pattern

BatchEventProcessor在lmax干擾模式中的作用是什么?

BatchEventProcessor<ValueEvent> eventProcessor 

= new BatchEventProcessor(ringBuffer,barrier,handler);

EXECUTOR.execute( eventProcessor );

BatchEventProcessor是eventProcessor的一個實現,它監視每次調用時可用的事件數。 然后,它會將每個事件的實際處理委派給您的eventHandler,並在批處理的最終事件已傳遞給您的事件處理程序時發出信號。

這個想法是,如果你想延遲從你的處理程序發布事件,例如將一組事件添加到一個更大的消息中。

如果我們正在談論Sam回答“將一組事件添加到單個更大的消息中”的任務,那么BatchEventProcessor使我們可以做兩件事:

  1. 某些事件系列的最后一次調用我們將獲得“endOfBatch == true”,因此我們可以將批量消息發布推遲到“endOfBatch == true”調用,並且我們不會遇到某些情況分鍾,我們沒有發送已經收集過一次,我們還需要處理這種情況。
  2. 只有在Handler處理批處理的所有消息后,BatchEventProcessor才會移動自己的Sequence值。 例如,它可以在我們的處理程序中保存當前批處理的先前事件並使用它們來生成批量消息,您不應該考慮可能會損壞此重用事件內容的生成器。 生成器無法訪問這些事件和相關序列,直到處理程序從onEvent返回(,endOfBatch == true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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