我想用multi-EventHandleGroup处理不同的事件吗?我找不到那个例子。谢谢... 这是代码:
executorService = Executors.newFixedThreadPool(threadPoolSize);
disruptor = new Disruptor<>(new DefaultEventFactory(),
ringBufferSize, executorService
, ProducerType.SINGLE, new BlockingWaitStrategy());
EventHandlerGroup<OrderEvent> orderEventEventHandlerGroup =
disruptor.handleEventsWith(
new OrderEventHandle(rabbitTemplate));
orderEventEventHandlerGroup.then(new
MoveEventFromProcessing(redisService))
.then(new EventClearHandle());
我想添加另一个事件,并希望通过另一个EventHandleGroup来处理它,例如:
cancelEventDisruptor.handleEventsWith(new
CancelOrderHandle()).then(new MoveEventFromProcessing(redisService))
.then(new EventClearHandle());
答案 0 :(得分:0)
所有eventHandlers
查看所有消息。为了实现您正在寻找的OrderEventHandle
和CancelOrderHandle
,需要能够确定所见事件的类型,并忽略那些不适用于它们的事件。
在示例代码中,您还将建立两个完整的处理链。最好建议在MoveEventFromProcessing
和OrderEventHandle
上都设置一个CancelOrderHandle
门(请参见SequenceBarrier),然后在其上选通EventClearHandle
。这样的拓扑看起来就像
Producer -> RB -> OrderEventHandle -> MoveEventFromProcessing -> EventClearHandle
\-> CancelEventHandle /