一种基于Disruptor和注解的高性能内存队列调度方法技术

技术编号:37144290 阅读:22 留言:0更新日期:2023-04-06 21:54
本发明专利技术涉及内存队列调度技术领域,具体为一种基于Disruptor和注解的高性能内存队列调度方法。包括:项目启动阶段初始化消费者,包括在需要消费消息加上方法的标志性注解或者类的标志性注解,并在项目启动的时候扫描所有加上标志性注解的方法和加上标志性注解的类,为每个方法生成一个对象;生产者发送消息,包括S21:在需要发送消息的方法上加上发送的标志性注解;根据topic路由表将消息内容推送到ringbuffer中;消费者消费消息,采用线程池的工作线程并行处理所述ringbuffer内存队列中的消息。本技术方案能够在保留Disruptor的高性能的同时减少开发配置工作量,提升消费效率。率。率。

【技术实现步骤摘要】
一种基于Disruptor和注解的高性能内存队列调度方法


[0001]本专利技术涉及内存队列调度
,具体为一种基于Disruptor和注解的高性能内存队列调度方法。

技术介绍

[0002]在一个消息队列内部,因各种原因所致,有时候会出现消息体无法有效出列的情况,这种情况下,如果不及时为之调度,将导致消息队列阻塞,从而影响其他消息体的正常消费,甚至导致相关上下游服务的崩溃,因此需要利用技术方案实现消息队列防阻塞。
[0003]现有技术在同一个系统内部进行消息推送时,用Kafka、RabbitMQ等系统间传递消息的消息队列,可能会面临浪费性能和服务器的问题,而java原生的ArrayBlockingQueue等队列的性能较差且不方便扩展。以Disruptor作为基础的内存队列具有很高的性能,但其本身仍存在的调用接口较为繁琐、生产者不能阻塞等待消费结果、消费者只能串行消费等问题。

技术实现思路

[0004]本专利技术的目的在于:提出一种基于Disruptor和注解的高性能内存队列调度方法,该技术方案能够在保留Disrup本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于Disruptor和注解的高性能内存队列调度方法,其特征在于:包括:项目启动阶段初始化消费者,包括在需要消费消息加上方法的标志性注解或者类的标志性注解,并在项目启动的时候扫描所有加上标志性注解的方法和加上标志性注解的类,为每个方法生成一个对象;生产者发送消息,包括S21:在需要发送消息的方法上加上发送的标志性注解;根据topic路由表将消息内容推送到ringbuffer中;消费者消费消息,采用线程池的工作线程并行处理所述ringbuffer内存队列中的消息。2.根据权利要求1所述的一种基于Disruptor和注解的高性能内存队列调度方法,其特征在于:所述项目启动阶段初始化消费者的步骤还包括:S11:在需要消费消息加上方法的标志性注解@OnEvent或者类的标志性注解@Consumer;S12:项目启动的时候扫描所有加上@OnEvent注解的方法和加上@Consumer注解的类,给每个方法生成一个Disruptor的EventHandler对象;S13:将所有的EventHandler对象根据topic分组,每个topic生成一个Disruptor对象;S14:在DisruptorFactory里面维护topic到Disruptor对象的映射关系。3.根据权利要求1所述的一种基于Disruptor和注解的高性能内存队列调度方法,其特征在于:所述生产者发送消息的步骤还包括:S22:根据发送的标志性注解代理到spring的切面,根据消息内部的topic路由到对应的ring...

【专利技术属性】
技术研发人员:宋桂宇
申请(专利权)人:重庆富民银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1