应用disruptor队列-ringBuffer环形缓冲器

本文介绍了Disruptor,一个高性能的消息框架,通过环形缓冲区实现协调读写顺序,降低线程竞争。文章详细讲解了生产者、消费者和事件处理器的实现,以及如何配置Disruptor环形队列和动态TP线程池。

一disruptor介绍

Disruptor是一个高性能的消息框架,其核心是基于环形缓冲区实现的。Disruptor的设计目标是尽可能地减少线程之间的竞争和同步,从而提高系统的吞吐量和响应速度。下面让我来介绍一下在使用Disruptor中如何优雅地使用环形队列。

首先,需要明确的是,Disruptor中的环形队列与普通的环形队列有所不同。Disruptor的环形队列并不是用于存储数据,而是用于协调读写操作的顺序。具体来说,当有多个消费者同时读取队列中的元素时,Disruptor会保证每个消费者只读取到它前面的元素,这样就避免了不必要的竞争和同步。
 

二场景应用定义不同类

1.公共的生产者CommonPublishEvent

@Component
public class CommonPublishEvent {

   /**
    * 发布
    *
    * @param event
    */
   public void publishEvent(MyApplicationEvent event, RingBuffer<DisruptorEvent> ringBuffer) {
      // 发布事件
      long sequence = ringBuffer.next();
      try {
         DisruptorEvent disruptorEvent = ringBuffer.get(sequence);
         disruptorEvent.setEvent(event);
      } finally {
         ringBuffer.publish(sequence);
      }
   }

}

2.父消费者CommonEventProcessor

public class CommonEventProcessor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值