Disruptor 可以动态增加消费者吗
[该贴被abaddoncoder于2015-04-15 09:04修改过]
[该贴被abaddoncoder于2015-04-15 21:17修改过]
diruptor最优模型是生产者与消费者的关系是1:1,你可以让这一个消费者专门做分发dispatch,这样变成1:1:N,最后的N就是你需要的动态多个消费者,请注意,一旦让这个消费者做分发,效率性能就会降低。
我实际是想把ringbuffer里的事件,跟据某类型的事件分发到一个线程里去处理,也就是说这个线程只处理这一类型的事件,但ringbuffer里的事件类型是动态变化,并非固定几类事件
本想自己通过线程来实现,大致思路就是:产生一个新类型的事件,就给分配一个线程,等这一类事件结束了,这个线也over了,线程的个数跟随事件类型的数量变化而变化。后来想以前在JDon上看到有高性能无锁的Disruptor,就用上了,但最后还是得自己加分派
代码很简单:
disruptor.handleEventsWithWorkerPool(new MyEventHandler());
disruptor.start();
但在MyEventHandler()中onEvent函数中打印结果:
11:29:43.143 [pool-2-thread-1] ...
11:29:43.198 [pool-1-thread-1] ...
让人感觉就不是单写了,并且在写数据库时还出现了并发异常,所以应该不是单写,要么就是我代码写的不对