[英]LMAX Distruptor Partition and join batch
因此,當前我有一個帶有阻塞隊列的Executor實現,具體實現是這樣的,我有每個請求的項目列表,並將它們划分為分區,然后計算每個分區,最后將它們合並在一起以得到最終列表。
如何在LMAX中實現它? 我看到一旦有了分區並將其推入RingBuffer,每個分區都被視為單獨的項目,因此我可以自定義加入它們。 就像是,
ConcurrentHashMap<Long, LongAdder> map = new ConcurrentHashMap<>();
@Override
public List<SomeTask> score(final List<SomeTask> tasks) {
long id = tasks.get(0).id;
map.put(id, new LongAdder());
for (SomeTask task : tasks) {
producer.onData(task);
}
while (map.get(id).intValue() != tasks.size()) ;
map.remove(id);
return tasks;
}
有沒有一種干凈的方法? 我專門查看了https://github.com/LMAX-Exchange/disruptor/tree/master/src/test/java/com/lmax/disruptor/example和KeyedBatching,但它們似乎是在一個線程上進行批處理和執行的。
目前,對我來說,每個分區大約需要200毫秒,我想並行執行它們。
任何幫助是極大的贊賞。
我認為您應該看看worker-pool選項,然后是重新組合碎片的最終事件處理器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.