-1

我想用 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());
4

1 回答 1

0

全部eventHandlers查看所有消息。为了实现您正在寻找的内容,您OrderEventHandle需要CancelOrderHandle能够确定所见事件的类型并忽略不适用的事件。

在示例代码中,您还设置了两个完整的处理链。最好建议您在两者上都有一个MoveEventFromProcessing门控(请参阅SequenceBarrierOrderEventHandleCancelOrderHandle然后在其EventClearHandle上设置门控。所以拓扑看起来像

Producer -> RB -> OrderEventHandle -> MoveEventFromProcessing -> EventClearHandle \-> CancelEventHandle /

于 2018-11-20T12:00:53.003 回答