Как объясняется в https://martinfowler.com/articles/lmax.html, мне сначала нужно обработать события RingBuffer с помощью Unmarchaler, а затем с помощью Business Logic Processor. Предположим, что он настроен как (https://lmax-exchange.github.io/disruptor/docs/com/lmax/disruptor/dsl/Disruptor.html)Передача данных между последовательными потребителями в LMAX Disruptor (от unmarchaler до бизнес-логики)?
Disruptor<MyEvent> disruptor = new Disruptor<MyEvent>(MyEvent.FACTORY, 32, Executors.newCachedThreadPool());
EventHandler<MyEvent> handler1 = new EventHandler<MyEvent>() { ... };
EventHandler<MyEvent> handler2 = new EventHandler<MyEvent>() { ... };
disruptor.handleEventsWith(handler1);
disruptor.after(handler1).handleEventsWith(handler2);
Идея то, что Handler1 является unmarchaler и Handler2 потребляет материал, обработанный Handler1.
Quesion: Как я могу точно скопировать часть «unmarchaling и положить обратно в разрушитель»? Я нашел это объяснение https://groups.google.com/forum/#!topic/lmax-disruptor/q6h5HBEBRUk, но я не совсем понял. Предположим, что событие прибыл на обратный вызов для Handler1
void onEvent(T event, long sequence, boolean endOfBatch)
(Javadoc: https://lmax-exchange.github.io/disruptor/docs/com/lmax/disruptor/EventHandler.html)
ООН-marchals некоторые из данных событий. Теперь мне нужно добавить unmarchaled данные к событию для handler2, который будет иметь дело с unmarchaled объектом.
Что нужно сделать для события «обновления»? Изменяет ли объект «событие» достаточно?