<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>
public class Data {
private String content;
public Data(String content) {
this.content = content;
}
// Getters and setters...
}
public class DataEvent {
private Data data;
public DataEvent() {
this.data = new Data("");
}
public void setData(Data data) {
this.data = data;
}
public Data getData() {
return data;
}
}
public class DataEventHandler implements EventHandler<DataEvent> {
@Override
public void onEvent(DataEvent event, long sequence, boolean endOfBatch) throws Exception {
}
}
public class DataEventFactory implements EventFactory<DataEvent> {
@Override
public DataEvent newInstance() {
return new DataEvent();
}
}
public class DataEventMain {
public static void main(String[] args) {
Disruptor<DataEvent> disruptor = new Disruptor<>(new DataEventFactory(), bufferSize, executor);
DataEventHandler[] eventHandlers = new DataEventHandler[4];
for (int i = 0; i < eventHandlers.length; i++) {
eventHandlers[i] = new DataEventHandler();
}
disruptor.handleEventsWith(eventHandlers);
disruptor.start();
RingBuffer<DataEvent> ringBuffer = disruptor.getRingBuffer();
for (int i = 0; i < 10; i++) {
long sequence = ringBuffer.next();
DataEvent event = ringBuffer.get(sequence);
event.setData(new Data("Data " + i));
ringBuffer.publish(sequence);
}
disruptor.shutdown();
}
}