下面看一下多生产多消费者的模式,下面的代码是模拟100个生产者,每个生产者生产100个事件,然后有3个消费者,同时进行消费,共消费1W个事件,
下面看一下代码:
这边new出了3个消费者,并把消费者数组放入workPool这个消息队列中,然后在RingBuffer中获取事件,进行消费:
看一下event类:Order
下面看一下生产者:
把数据生产完成后,放入ringBuffer,然后进行事件发布
在看一下消费者:
通过一个原子类进行消费的记录查看哪个消费者消费了多少个事件,
查看一下打印的结果:
看一下最后的打印结果:
3个消费者,总共消费1000个事件,中间的协调通过SequenceBarrier进行消费协调;这种实现模式就是多消费者多生产者。需要注意的是RingBuffer和disruptor使用的范围,RingBuffer适合使用在不复杂消费模型上面,disruptor适合使用在复杂消费模型上,例如,菱形,顺序,六边形等。