gpt4 book ai didi

java - Lmax Disruptor,许多消费者 - 如何让消费者只接受特定类型的消息并独立进行?

转载 作者:行者123 更新时间:2023-11-30 06:06:48 25 4
gpt4 key购买 nike

我计划在我的干扰器中有许多并行消费者。

我需要每个消费者只消费适合他们的消息。

例如,我有 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
}

关于java - Lmax Disruptor,许多消费者 - 如何让消费者只接受特定类型的消息并独立进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43371199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com