首先准备一个可以跑起来的demo
OrderEvent.java
public class OrderEvent {
private long value;
public long getValue() {
return value;
}
public void setValue(long value) {
this.value = value;
}
}
OrderEventFactory.java
public class OrderEventFactory implements EventFactory<OrderEvent> {
public OrderEvent newInstance() {
//这个方法就是为了返回空的数据对象(Event)
return new OrderEvent();
}
}
OrderEventHandler.java
public class OrderEventHandler implements EventHandler<OrderEvent>{
@Override
public void onEvent(OrderEvent event, long sequence, boolean endOfBatch) throws Exception {
// Thread.sleep(Integer.MAX_VALUE);
System.err.println("消费者: " + event.getValue());
}
}
OrderEventProducer.java
public class OrderEventProducer {
private RingBuffer<OrderEvent> ringBuffer;
public OrderEventProducer(RingBuffer<OrderEvent> ringBuffer) {
this.ringBuffer = ringBuffer;
}
public void sendData(ByteBuffer data) {
//1 在生产者发送消息的时候, 首先 需要从我们的ringBuffer里面 获取一个可用的序号
long sequence = ringBuffer.next(); //0
try {
//2 根据这个序号, 找到具体的 "OrderEve