public class Event {
private String data;
public void setData(String data) {
this.data = data;
}
public String getData() {
return data;
}
}
public class EventHandler implements EventHandler<Event> {
@Override
public void onEvent(Event event, long sequence, boolean endOfBatch) throws Exception {
System.out.println("Processed event: " + event.getData());
}
}
public class Main {
public static void main(String[] args) {
RingBuffer<Event> ringBuffer = RingBuffer.createSingleProducer(Event::new, 1024);
EventHandler<Event> eventHandler = new EventHandler();
BatchEventProcessor<Event> batchEventProcessor = new BatchEventProcessor<>(ringBuffer, ringBuffer.newBarrier(), eventHandler);
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(batchEventProcessor);
for (long i = 0; i < 10; i++) {
long sequence = ringBuffer.next();
Event event = ringBuffer.get(sequence);
event.setData("Event " + i);
ringBuffer.publish(sequence);
}
}
}