在helloWorld的实例中,我们创建Disruptor实例,然后调用getRingBuffer方法去获取RingBuffer,其实在很多时候,我们可以直接使用RingBuffer,以及其他的API操作。我们一起熟悉下示例:
使用EventProcessor消息处理器。
BatchEventProcessor 多线程并发执行,不同线程执行不同是不同的event
EventProcessor有3个实现类
BatchEventProcessor 多线程并发执行,不同线程执行不同是不同的event
使用BatchEventProcessor 消费者需要实现EventHandler接口
我们来看下面的代码:
需要处理的实体类
packagebhz.generate1;importjava.util.concurrent.atomic.AtomicInteger;public classTrade {private String id;//ID
privateString name;private double price;//金额
private AtomicInteger count = new AtomicInteger(0);publicString getId() {returnid;
}public voidsetId(String id) {this.id =id;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public doublegetPrice() {returnprice;
}public void setPrice(doubleprice) {this.price =price;
}publicAtomicInteger getCount() {returncount;
}public voidsetCount(AtomicInteger count) {this.count =count;
}
}
消费者类:
packagebhz.generate1;importjava.util.UUID;importcom.lmax.disruptor.EventHandler;importcom.lmax.disruptor.WorkHandler;public class TradeHandler implements EventHandler, WorkHandler{
@Overridepublic void onEvent(Trade event, long sequence, boolean endOfBatch) throwsExceptio