一种消息队列及消费者动态创建方法及系统技术方案

技术编号:30345849 阅读:14 留言:0更新日期:2021-10-12 23:33
本发明专利技术公开了一种消息队列及消费者动态创建方法及系统,包括:S1:在多租户SaaS系统中,为各业务项目和各租户之间构建MQ动态配置规则,通过在sendTask方法体上自定义消息队列注解,为各业务项目自动创建各租户的专属消息队列及消费者。本发明专利技术利用主动创建和被动创建租户的专属消息队列及消费者,确保不同租户之间数据隔离的同时,提高消费者服务的可靠性以及提升消费者服务的吞吐量。及提升消费者服务的吞吐量。及提升消费者服务的吞吐量。

【技术实现步骤摘要】
一种消息队列及消费者动态创建方法及系统


[0001]本专利技术涉及计算机
,尤其一种消息队列及消费者动态创建方法及系统。

技术介绍

[0002]SaaS,是Software

as

a

Service的缩写名称,意思为软件即服务,即通过网络提供软件服务。SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务。
[0003]多租户(Multi Tenancy/Tenant)SaaS是一种软件系统架构,实现一个平台同时为多个租户提供服务。在该种系统架构上,多个租户共享同样的硬件配置和应用程序,并实现数据的隔离。应用程序被设计成能将自己的数据、配置进行虚拟的分区,以便每个租户都感觉到自己是在一个私有的、可定制化的应用实例上工作。
[0004]现有电商平台基于多租户SaaS概念开发,旨在可以为成千上万不同的租户提供服务。电商平台可包括网页服务、数据服务、管理服务,网页服务用于存储用户浏览购买商品跟踪订单的页面,数据服务用于为网页服务的页面提供商品、用户、订单、支付等一系列数据,管理服务用于管理商品、用户、订单、支付账务等一系列数据。电商领域中通过消息队列提高用户体验和吞吐量。
[0005]消息队列(Message queue)可以对传输过程中的消息进行保存,使得消息由消息发送方(或称为生产者)发出后暂存于消息队列中,而无需立即传递至消息接收方(或称为消费者),从而实现消息发送方与消息接收方之间的异步通信。传统电商平台中消息队列的使用,往往是多个租户共用一个消息队列以及共用一个消费者,然而不同租户的业务需求量不同,例如租户A数据量大,租户B数据量小,在并发时可能会出现由于租户A的数据量过大无法在短时间内处理完,导致租户B的数据一直阻塞在队列中得不到处理,影响用户体验。

技术实现思路

[0006]本申请实施例通过提供一种消息队列及消费者动态创建方法及系统,解决了现有技术中多租户SaaS系统架构内,由于某些租户出现业务处理量过大时,导致其他租户的业务数据无法及时得到处理的问题,本技术方案通过为每个租户配置专属消息队列及消费者,实现数据隔离的同时,提高消费者服务的吞吐量。
[0007]第一方面,本申请实施例提供了一种消息队列及消费者动态创建方法,包括:
[0008]S1:在多租户SaaS系统中,为各业务项目和各租户之间构建MQ动态配置规则,通过在sendTask方法体上自定义消息队列注解,为各所述业务项目自动创建各所述租户的专属消息队列及消费者;
[0009]S2:根据各所述业务项目预设的消费者监听类,对所述SaaS系统创建新租户的主题消息进行监听;根据所述MQ动态配置规则以及所监听的主题消息,扫描所述业务项目所
使用自定义消息队列注解的消费者方法,在各所述业务项目中为新增租户创建专属消息队列及消费者;;
[0010]S3:在新增业务项目初始化启动时,根据MQ动态配置规则,利用配置类自动捕获所使用自定义消息队列注解的消费者方法,在所述新增业务项目中为每个租户生成专属消息队列及消费者。
[0011]进一步地,在所述步骤S2中,还包括在接收到创建新租户的主题消息时,调用创建消费者接口,并在消费者类的消费方法上使用所述自定义消息队列注解。
[0012]进一步地,在所述SaaS系统创建新租户的主题消息中,携带有新租户的唯一标识码Code,并通过推送到队列中,通知各所述业务项目创建新租户的专属消息队列及消费者。
[0013]进一步地,在所述步骤S2中,各所述业务项目通过编写创建消费者接口,模拟RabbitMq注册消费者到Spring容器的过程,在队列名和RouteKey前拼接新租户的所述唯一标识码Code,以此为新租户生成专属消息队列及消费者。
[0014]进一步地,在所述步骤S3中,利用配置类自动捕获使用所述自定义消息队列注解的消费者方法包括在所述新增业务项目的消费者类中的消费方法上使用所述自定义消息队列注解,并通过SpringBoot框架的配置类,以查询所述SaaS系统中所有租户的唯一标识码Code。
[0015]进一步地,所述步骤S3进一步包括扫描所有所述业务项目中所有类下的所有方法,找出使用所述自定义消息队列注解的消费者方法,获取注解中携带的队列名和RouteKey;模拟RabbitMq注册消费者到Spring容器的过程,在在队列名和RouteKey前拼接租户唯一标识码Code,以此在所述新增业务项目中为每个租户生成专属消费者。
[0016]第二方面,本申请实施例提供了一种消息队列及消费者动态创建系统,采用第一方面所述的方法,包括:规则配置模块、第一创建模块、第二创建模块,所述规则配置模块分别与所述第一创建模块、所述第二创建模块连接;
[0017]所述规则配置模块配置为在多租户SaaS系统中,为各业务项目和各租户之间构建MQ动态配置规则,通过在sendTask方法体上自定义消息队列注解,为各所述业务项目自动创建各所述租户的专属消息队列及消费者;
[0018]所述第一创建模块配置为根据各所述业务项目预设的消费者监听类,对所述SaaS系统创建新租户的主题消息进行监听;根据所述MQ动态配置规则以及所监听的主题消息,扫描所述业务项目所使用自定义消息队列注解的消费者方法,在各所述业务项目中为新增租户创建专属消息队列及消费者;
[0019]所述第二创建模块配置为在新增业务项目初始化启动时,根据MQ动态配置规则,利用配置类自动捕获所使用自定义消息队列注解的消费者方法,在所述新增业务项目中为每个租户生成专属消息队列及消费者。
[0020]进一步地,还包括租户新增模块,所述租户新增模块与所述第一创建模块连接;所述租户新增模块配置为在SaaS系统中创建新租户,并向所述第一创建模块推送新增租户的主题消息。
[0021]进一步地,还包括业务新增模块,所述业务新增模块与所述第二创建模块连接;所述业务新增模块配置为在RabbitMq消息队列中创建新业务项目,并推送给所述第二创建模块配置。
[0022]第三方面,本公开实施例提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现第一方面所述的方法步骤。
[0023]第四方面,本公开实施例提供了一种计算机可读存储介质,用于存储消息中间件的消息传递装置所用的计算机指令,其包含用于执行上述第一方面中消息中间件的消息传递方法所涉及的计算机指令。
[0024]本申请实施例中提供的技术方案,至少具有如下技术效果:
[0025](1)解决了SaaS系统在传统消息队列设计中的吞吐量堵塞的问题,利用消息队列MQ技术,为多租户SaaS系统中的各个租户动态创建专属消息队列及消费者,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息队列及消费者动态创建方法,其特征在于,包括:S1:在多租户SaaS系统中,为各业务项目和各租户之间构建MQ动态配置规则,通过在sendTask方法体上自定义消息队列注解,为各所述业务项目自动创建各所述租户的专属消息队列及消费者;S2:根据各所述业务项目预设的消费者监听类,对所述SaaS系统创建新租户的主题消息进行监听;根据所述MQ动态配置规则以及所监听的主题消息,扫描所述业务项目所使用自定义消息队列注解的消费者方法,在各所述业务项目中为新增租户创建专属消息队列及消费者;S3:在新增业务项目初始化启动时,根据MQ动态配置规则,利用配置类自动捕获所使用自定义消息队列注解的消费者方法,在所述新增业务项目中为每个租户生成专属消息队列及消费者。2.如权利要求1所述的消息队列及消费者动态创建方法,其特征在于,在所述步骤S2中,还包括在接收到创建新租户的主题消息时,调用创建消费者接口,并在消费者类的消费方法上使用所述自定义消息队列注解。3.如权利要求1所述的消息队列及消费者动态创建方法,其特征在于,在所述SaaS系统创建新租户的主题消息中,携带有新租户的唯一标识码Code,并通过推送到队列中,通知各所述业务项目创建新租户的专属消息队列及消费者。4.如权利要求3所述的消息队列及消费者动态创建方法,其特征在于,在所述步骤S2中,各所述业务项目通过编写创建消费者接口,模拟RabbitMq注册消费者到Spring容器的过程,在队列名和RouteKey前拼接新租户的所述唯一标识码Code,以此为新租户生成专属消息队列及消费者。5.如权利要求3所述的消息队列及消费者动态创建方法,其特征在于,在所述步骤S3中,利用配置类自动捕获使用所述自定义消息队列注解的消费者方法包括在所述新增业务项目的消费者类中的消费方法上使用所述自定义消息队列注解,并通过SpringBoot框架的配置类,以查询所述SaaS系统中所有租户的唯一标识码Code。6.如权利要求5所述的消息队列及消...

【专利技术属性】
技术研发人员:牛如兵成圣昌刘国亮
申请(专利权)人:上海百秋电子商务有限公司
类型:发明
国别省市:

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

1