感觉那么多人的回复都没理解楼主的意思啊... 假设Event数据是手机号码,SMSEventHandler中的逻辑就是给手机号码发短信,
生产者生产了10000个手机号, 楼主想要通过new出2多个SMSEventHandler去并行的消费短信,但是结果确实每个手机发送了2次.
disruptor.handleWith(new SMSEventHandler(), new SMSEventHandler()) 这种结果会让这10000个手机每个都发了2次短信!!!!
楼主想的是多个EventHandler一起去抢数据消费!! 这种场景不要用EventHanler
Disruptor提供了WorkPool和WorkerHandler<T>的,你就不要实现EventHandler了, 而是去实现WorkerHandler
WorkerHandler<T> handlers = new WorkHandler[16];
然后传进去
public final EventHandlerGroup<T> handleEventsWithWorkerPool(final WorkHandler<T>... workHandlers)
那么 将会有16个消费者线程去消费这10000条短信!