public class MyEvent {
private String data;
}
public class MyEventHandler implements EventHandler<MyEvent> {
@Override
public void onEvent(MyEvent event, long sequence, boolean endOfBatch) throws Exception {
System.out.println("Processing event: " + event.getData());
}
}
public class MyEventFactory implements EventFactory<MyEvent> {
@Override
public MyEvent newInstance() {
return new MyEvent();
}
}
RingBuffer<MyEvent> ringBuffer = RingBuffer.createSingleProducer(new MyEventFactory(), bufferSize);
SequenceBarrier sequenceBarrier = ringBuffer.newBarrier();
MyEventHandler eventHandler = new MyEventHandler();
WorkerPool<MyEvent> workerPool = new WorkerPool<>(ringBuffer, sequenceBarrier, new IgnoreExceptionHandler(), eventHandlers);
ringBuffer.addGatingSequences(workerPool.getWorkerSequences());
workerPool.start(Executors.newFixedThreadPool(threadCount));