Разрушитель LMAX. Как определить мульти EventHandlerGroup? - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу обработать другое событие с помощью 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());

1 Ответ

0 голосов
/ 20 ноября 2018

Все eventHandlers посмотреть все сообщения.Чтобы достичь того, что вы ищете, ваши OrderEventHandle и CancelOrderHandle должны иметь возможность установить тип наблюдаемого события и игнорировать те, которые не относятся к ним.

В примере кода вы также настраиваете две полные цепочки обработки.Вам бы лучше иметь один MoveEventFromProcessing стробированный (см. SequenceBarrier ) как для OrderEventHandle, так и CancelOrderHandle, а затем установить для него EventClearHandle.Таким образом, топология будет выглядеть как

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...