我计划在我的干扰器中有许多类似的消费者。
我需要每个消费者只使用为他们准备的消息。
例如,我有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?
重要事项:我希望处理过程是独立的。消费者不应该被链锁住,每个人都独立地运行缓冲器。“C”型消费者对#6的处理可能早于A型的1号,如果A型的消费者比C型慢的话。
我很感激如何使用LMAX中断配置来实现它。
发布于 2017-04-18 19:03:15
典型的模式是使用序列号--假设您有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
}
发布于 2017-04-12 16:25:35
将干扰器配置为使用单一类型的对象,但创建多个中断器,每个对象类型一个。在上述情况下,将有三个单独的干扰者。
https://stackoverflow.com/questions/43371199
复制相似问题