[发明专利]一种基于Disruptor和注解的高性能内存队列调度方法在审
申请号: | 202211699411.5 | 申请日: | 2022-12-28 |
公开(公告)号: | CN115904758A | 公开(公告)日: | 2023-04-04 |
发明(设计)人: | 宋桂宇 | 申请(专利权)人: | 重庆富民银行股份有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/448;G06F9/50 |
代理公司: | 重庆强大凯创专利代理事务所(普通合伙) 50217 | 代理人: | 黄书凯 |
地址: | 401121 重庆市渝*** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 disruptor 注解 性能 内存 队列 调度 方法 | ||
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路由到对应的ringbuffer;
S23:根据topic获取Disruptor对象;
S24:根据Disruptor对象获取ringbuffer。
4.根据权利要求1所述的一种基于Disruptor和注解的高性能内存队列调度方法,其特征在于:所述消息内容推送到ringbuffer中的步骤包括:
S31:在ringbuffer中推送消息;
S32:ringbuffer消费消息并根据topic路由到对应的EventHandler数组,调用每个EventHandler的onEvent方法。
5.根据权利要求2所述的一种基于Disruptor和注解的高性能内存队列调度方法,其特征在于:所述消费者消费消息的步骤具体包括:
S41:反射得到加了@OnEvent注解的原始消费方法,从线程池开启新的线程,传入消息内容,执行消费方法;
S42:如果开启了同步等待结果,则生产者线程等待消费者返回结果后继续往下执行。
6.根据权利要求2所述的一种基于Disruptor和注解的高性能内存队列调度方法,其特征在于:所述S12将扫描所有加上方法上的@OnEvent注解和加在类上的@Consumer注解并生成对应的消费者监听,每个所述消费者监听被扫描到之后都放到handlesMap的对应topic的value中。
7.根据权利要求3所述的一种基于Disruptor和注解的高性能内存队列调度方法,其特征在于:所述消费者消费消息的步骤中,从spring上下文获取注册的线程池bean,从方法入参取得消息内容EventMessage对象。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆富民银行股份有限公司,未经重庆富民银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211699411.5/1.html,转载请声明来源钻瓜专利网。