CN106933589A - 一种基于配置的消息队列组件及其集成的方法 - Google Patents
一种基于配置的消息队列组件及其集成的方法 Download PDFInfo
- Publication number
- CN106933589A CN106933589A CN201710145943.7A CN201710145943A CN106933589A CN 106933589 A CN106933589 A CN 106933589A CN 201710145943 A CN201710145943 A CN 201710145943A CN 106933589 A CN106933589 A CN 106933589A
- Authority
- CN
- China
- Prior art keywords
- message
- service
- configuration
- management
- queue component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于配置的消息队列组件及其集成的方法,涉及并发数据处理技术领域。通过在组件中设置消息服务模块,且消息服务模块包括消息体和消息监听器,所述消息体为自定义注解,用于装载队列的配置信息并注册,所述消息监听器用于为对外开放的SPI,使用方可根据具体的业务逻辑实现其内部的监听方法,所以,对该组件集成后,可以使集成MQ消息队列变得轻量级,只需要简单的配置即可集成队列服务;而且实现了与MQ产品解耦,可以实现无感知的MQ产品替换。
Description
技术领域
本发明涉及并发数据处理技术领域,尤其涉及一种基于配置的消息队列组件及其集成的方法。
背景技术
互联网企业高并发的属性使得很多企业引入了消息队列服务,来作为并发流量的缓冲区。其中,使用比较广泛的消息队列服务器有:RabbitMQ、ActiveMQ、Kafka等。在这些服务器中,MQ产品提供了自定义的调用客户端,基于客户端就可以方便的实现消息的生产和消费。
但是,消息生产消费过程中的使用以及配置信息比较繁琐,需要使用方了解其调用以及配置方式,对使用方不够透明,而且,客户端与MQ产品高度耦合,软件系统依赖于指定的MQ产品,对于后期的更换带来不便以及增加更换的风险。
发明内容
本发明的目的在于提供一种基于配置的消息队列组件及其集成的方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于配置的消息队列组件,包括:MQ管理模块,以及与所述MQ管理模块数据连接的MQ处理线程池、消息服务模块和MQ服务可用性监控模块;所述MQ管理模块为整个消息的核心管理类,用于消息的生产、消费端的监听以及线程池的管理;所述MQ处理线程池用于对多线程进行调度管理,增强对并发的吞吐;所述消息服务模块用于提供对外开放的API服务,使用方通过引入该服务即可实现消息的生产,所述消息服务模块包括消息体和消息监听器,所述消息体为自定义注解,用于装载队列的配置信息并注册,所述消息监听器用于为对外开放的SPI,使用方可根据具体的业务逻辑实现其内部的监听方法;所述MQ服务可用性监控模块:用于对客户端连接进行监控管理,可实现断链重连。
优选地,所述消息体通过对消息的抽象,自定义消息注解,实现消息体的可配置。
优选地,所述消息体采用类MessageAnnotationBeanPostProcessor实现对消息注解配置的自动注册。
优选地,所述MQ管理模块采用MessageConfig实现对整个消息运行环境的管理。
一种基于配置的消息队列组件集成的方法,包括如下步骤:
S1,通过maven的方式将组件引入项目中;
S2,在sendTask方法体上添加消息注解,消息监听器自动监听到该消息,实现自动注册;
S3,在需要消费的业务项目中,创建业务监听类,并实现MessageListener消息监听器接口,在监听方法内编写消费业务,在监听方法体上配置消息注解,实现消费业务的绑定,实现消费端的自动注册。
优选地,S2中所述在sendTask方法体上添加消息注解,具体为,通过对消息的抽象,自定义消息注解。
优选地,S2中消息监听器自动监听到该消息,实现自动注册,具体为,采用类MessageAnnotationBeanPostProcessor实现对消息注解配置的自动注册。
本发明的有益效果是:本发明实施例提供的基于配置的消息队列组件及其集成的方法,通过在组件中设置消息服务模块,且消息服务模块包括消息体和消息监听器,所述消息体为自定义注解,用于装载队列的配置信息并注册,所述消息监听器用于为对外开放的SPI,使用方可根据具体的业务逻辑实现其内部的监听方法,所以,对该组件集成后,可以使集成MQ消息队列变得轻量级,只需要简单的配置即可集成队列服务;而且实现了与MQ产品解耦,可以实现无感知的MQ产品替换;另外,通过在组件中设置MQ处理线程池,实现了对多线程进行调度管理,增强了对并发的吞吐;通过在组件中设置MQ服务可用性监控模块,可以对客户端连接进行监控管理,实现断链重连,保证了通道的可用性;通过在组件中设置MQ管理模块,实现对整个消息的管理。
附图说明
图1是本发明实施例提供的基于配置的消息队列组件架构图;
图2是本发明实施例提供的基于配置的消息队列组件集成方法流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
本发明中涉及到的科技术语解释说明如下:
MQ:消息队列
AMQP:一个提供统一消息服务的应用层标准高级消息队列协议
RabbitMQ:RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。
API:应用程序编程接口,已经有了内部的实现,不对外暴露。
SPI:应用程序编程接,定义标准,实现依赖于调用方,常用于插件模式的开发中。
实施例一
如图1所示,本发明实施例提供了一种基于配置的消息队列组件,包括:MQ管理模块,以及与所述MQ管理模块数据连接的MQ处理线程池、消息服务模块和MQ服务可用性监控模块;所述MQ管理模块为整个消息的核心管理类,用于消息的生产、消费端的监听以及线程池的管理;所述MQ处理线程池用于对多线程进行调度管理,增强对并发的吞吐;所述消息服务模块用于提供对外开放的API服务,使用方通过引入该服务即可实现消息的生产,所述消息服务模块包括消息体和消息监听器,所述消息体为自定义注解,用于装载队列的配置信息并注册,所述消息监听器用于为对外开放的SPI,使用方可根据具体的业务逻辑实现其内部的监听方法;所述MQ服务可用性监控模块:用于对客户端连接进行监控管理,可实现断链重连。
其中,MQ的配置基于注解的实现方式,以及自动扫描注册;架构中消息监听器的定义,实现插件式模式,让低成本集成成为可能;结构中加入MQ服务可用性监控模块,起到连接检测、断链重连,保证了可用性、稳定性。
本发明实施例中,所述消息体通过对消息的抽象,自定义消息注解,实现消息体的可配置。
所述消息体采用类MessageAnnotationBeanPostProcessor实现对消息注解配置的自动注册。
所述MQ管理模块采用MessageConfig实现对整个消息运行环境的管理。
实施例二
如图2所示,本发明实施例提供了一种基于配置的消息队列组件集成的方法,包括如下步骤:
S1,通过maven的方式将组件引入项目中;
S2,在sendTask方法体上添加消息注解,消息监听器自动监听到该消息,实现自动注册;
S3,在需要消费的业务项目中,创建业务监听类,并实现MessageListener消息监听器接口,在监听方法内编写消费业务,在监听方法体上配置消息注解,实现消费业务的绑定,实现消费端的自动注册。
以上三步骤即可在业务项目中引入MQ服务,基于配置化、高内聚、低耦合、屏蔽底层细节的原则,使得开发人员在开发消息服务过程中,只需要把精力放在业务上,大大提高了开发效率。
本发明实施例中,S2中所述在sendTask方法体上添加消息注解,具体为,通过对消息的抽象,自定义消息注解。
本发明实施例中,S2中消息监听器自动监听到该消息,实现自动注册,具体为,采用类MessageAnnotationBeanPostProcessor实现对消息注解配置的自动注册。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明实施例提供的基于配置的消息队列组件及其集成的方法,通过在组件中设置消息服务模块,且消息服务模块包括消息体和消息监听器,所述消息体为自定义注解,用于装载队列的配置信息并注册,所述消息监听器用于为对外开放的SPI,使用方可根据具体的业务逻辑实现其内部的监听方法,所以,对该组件集成后,可以使集成MQ消息队列变得轻量级,只需要简单的配置即可集成队列服务;而且实现了与MQ产品解耦,可以实现无感知的MQ产品替换;另外,通过在组件中设置MQ处理线程池,实现了对多线程进行调度管理,增强了对并发的吞吐;通过在组件中设置MQ服务可用性监控模块,可以对客户端连接进行监控管理,实现断链重连,保证了通道的可用性;通过在组件中设置MQ管理模块,实现对整个消息的管理。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。
上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (7)
1.一种基于配置的消息队列组件,其特征在于,包括:MQ管理模块,以及与所述MQ管理模块数据连接的MQ处理线程池、消息服务模块和MQ服务可用性监控模块;所述MQ管理模块为整个消息的核心管理类,用于消息的生产、消费端的监听以及线程池的管理;所述MQ处理线程池用于对多线程进行调度管理,增强对并发的吞吐;所述消息服务模块用于提供对外开放的API服务,使用方通过引入该服务即可实现消息的生产,所述消息服务模块包括消息体和消息监听器,所述消息体为自定义注解,用于装载队列的配置信息并注册,所述消息监听器用于为对外开放的SPI,使用方可根据具体的业务逻辑实现其内部的监听方法;所述MQ服务可用性监控模块:用于对客户端连接进行监控管理,可实现断链重连。
2.根据权利要求1所述的基于配置的消息队列组件,其特征在于,所述消息体通过对消息的抽象,自定义消息注解,实现消息体的可配置。
3.根据权利要求2所述的基于配置的消息队列组件,其特征在于,所述消息体采用类MessageAnnotat ionBeanPostProcessor实现对消息注解配置的自动注册。
4.根据权利要求1所述的基于配置的消息队列组件,其特征在于,所述MQ管理模块采用MessageConfig实现对整个消息运行环境的管理。
5.一种基于配置的消息队列组件集成的方法,其特征在于,包括如下步骤:
S1,通过maven的方式将组件引入项目中;
S2,在sendTask方法体上添加消息注解,消息监听器自动监听到该消息,实现自动注册;
S3,在需要消费的业务项目中,创建业务监听类,并实现MessageListener消息监听器接口,在监听方法内编写消费业务,在监听方法体上配置消息注解,实现消费业务的绑定,实现消费端的自动注册。
6.根据权利要求5所述的基于配置的消息队列组件集成的方法,其特征在于,S2中所述在sendTask方法体上添加消息注解,具体为,通过对消息的抽象,自定义消息注解。
7.根据权利要求6所述的基于配置的消息队列组件集成的方法,其特征在于,S2中消息监听器自动监听到该消息,实现自动注册,具体为,采用类MessageAnnotationBeanPostProcessor实现对消息注解配置的自动注册。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710145943.7A CN106933589B (zh) | 2017-03-13 | 2017-03-13 | 一种基于配置的消息队列组件及其集成的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710145943.7A CN106933589B (zh) | 2017-03-13 | 2017-03-13 | 一种基于配置的消息队列组件及其集成的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933589A true CN106933589A (zh) | 2017-07-07 |
CN106933589B CN106933589B (zh) | 2020-07-28 |
Family
ID=59432009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710145943.7A Active CN106933589B (zh) | 2017-03-13 | 2017-03-13 | 一种基于配置的消息队列组件及其集成的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933589B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762945A (zh) * | 2018-05-14 | 2018-11-06 | 浪潮通用软件有限公司 | 一种支持多种消息队列的实现方法 |
CN109710435A (zh) * | 2019-01-03 | 2019-05-03 | 山东浪潮通软信息科技有限公司 | 一种基于支撑多消息队列的消息传递方法 |
CN110225005A (zh) * | 2019-05-27 | 2019-09-10 | 广东华卓科技有限公司 | 一种基于Netty网络框架的智能设备控制方法及系统 |
CN113138806A (zh) * | 2021-03-25 | 2021-07-20 | 车智互联(北京)科技有限公司 | 一种移动应用运行环境的处理方法及装置 |
CN113495797A (zh) * | 2021-06-22 | 2021-10-12 | 上海百秋电子商务有限公司 | 一种消息队列及消费者动态创建方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645331A (zh) * | 2004-01-02 | 2005-07-27 | 微软公司 | 隐式可配置消息队列基用户接口自动同步的系统和方法 |
CN101364924A (zh) * | 2008-09-26 | 2009-02-11 | 广州市聚晖电子科技有限公司 | 一种基于企业服务总线的数据采集自适应体系结构 |
CN102368212A (zh) * | 2010-09-14 | 2012-03-07 | 微软公司 | 消息队列管理 |
CN102938731A (zh) * | 2012-11-22 | 2013-02-20 | 北京锐易特软件技术有限公司 | 一种基于代理缓存适配模型的交换集成装置及方法 |
US20140298304A1 (en) * | 2012-07-17 | 2014-10-02 | Concurix Corporation | Transmission Point Pattern Extraction from Executable Code in Message Passing Environments |
CN104899015A (zh) * | 2014-03-07 | 2015-09-09 | 上海高达星软件系统有限公司 | 一种业务组件管理系统及其方法 |
US9483335B1 (en) * | 2014-09-30 | 2016-11-01 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
-
2017
- 2017-03-13 CN CN201710145943.7A patent/CN106933589B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645331A (zh) * | 2004-01-02 | 2005-07-27 | 微软公司 | 隐式可配置消息队列基用户接口自动同步的系统和方法 |
CN101364924A (zh) * | 2008-09-26 | 2009-02-11 | 广州市聚晖电子科技有限公司 | 一种基于企业服务总线的数据采集自适应体系结构 |
CN102368212A (zh) * | 2010-09-14 | 2012-03-07 | 微软公司 | 消息队列管理 |
US20140298304A1 (en) * | 2012-07-17 | 2014-10-02 | Concurix Corporation | Transmission Point Pattern Extraction from Executable Code in Message Passing Environments |
CN102938731A (zh) * | 2012-11-22 | 2013-02-20 | 北京锐易特软件技术有限公司 | 一种基于代理缓存适配模型的交换集成装置及方法 |
CN104899015A (zh) * | 2014-03-07 | 2015-09-09 | 上海高达星软件系统有限公司 | 一种业务组件管理系统及其方法 |
US9483335B1 (en) * | 2014-09-30 | 2016-11-01 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762945A (zh) * | 2018-05-14 | 2018-11-06 | 浪潮通用软件有限公司 | 一种支持多种消息队列的实现方法 |
CN109710435A (zh) * | 2019-01-03 | 2019-05-03 | 山东浪潮通软信息科技有限公司 | 一种基于支撑多消息队列的消息传递方法 |
CN110225005A (zh) * | 2019-05-27 | 2019-09-10 | 广东华卓科技有限公司 | 一种基于Netty网络框架的智能设备控制方法及系统 |
CN113138806A (zh) * | 2021-03-25 | 2021-07-20 | 车智互联(北京)科技有限公司 | 一种移动应用运行环境的处理方法及装置 |
CN113138806B (zh) * | 2021-03-25 | 2023-11-07 | 车智互联(北京)科技有限公司 | 一种移动应用运行环境的处理方法及装置 |
CN113495797A (zh) * | 2021-06-22 | 2021-10-12 | 上海百秋电子商务有限公司 | 一种消息队列及消费者动态创建方法及系统 |
CN113495797B (zh) * | 2021-06-22 | 2023-03-07 | 上海百秋新网商数字科技有限公司 | 一种消息队列及消费者动态创建方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106933589B (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933589A (zh) | 一种基于配置的消息队列组件及其集成的方法 | |
US20200329091A1 (en) | Methods and systems that use feedback to distribute and manage alerts | |
CN109960582A (zh) | 在tee侧实现多核并行的方法、装置及系统 | |
US9971563B2 (en) | Systems and methods for low interference logging and diagnostics | |
US8973117B2 (en) | Propagating security identity information to components of a composite application | |
US20170085653A1 (en) | Method, device and system for message distribution | |
WO2024032587A1 (zh) | Gpu资源使用方法、gpu虚拟化方法以及作业调度装置、集群 | |
CN107544805A (zh) | 基于Android系统可复用框架的手机游戏系统架构 | |
CN106911784B (zh) | 一种执行异步事件的方法和装置 | |
CN111026945B (zh) | 多平台爬虫调度方法、装置和存储介质 | |
US9298502B2 (en) | Pausing virtual machines using API signaling | |
CN114626352B (zh) | 报表自动化生成方法、装置、计算机设备及存储介质 | |
US20190165987A1 (en) | Request processing system using a combining engine | |
CN111241455B (zh) | 数据处理装置、计算机设备及存储介质 | |
CN106484523B (zh) | 一种硬件设备管理方法及其装置 | |
US20100315564A1 (en) | Embedded electronic device | |
US9137276B2 (en) | Managing message distribution in a networked environment | |
US8959192B1 (en) | User-context management | |
CN113641679B (zh) | 一种数据转移方法、数据转移系统、计算机设备和介质 | |
US20240061729A1 (en) | Multitenancy cross-tenant collaboration driven by event proxy | |
CN113409136B (zh) | 组合服务相似度分析方法、装置、计算机系统及存储介质 | |
CN117435367B (zh) | 用户行为处理方法、装置、设备、存储介质和程序产品 | |
Horton et al. | Xgrid and R: Parallel distributed processing using heterogeneous groups of Apple computers | |
Tsai et al. | Streaming in NoSQL | |
CN117611421A (zh) | 素材审核方法、装置、设备、存储介质和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |