基于消息队列的分布式方法和系统技术方案

技术编号:8532697 阅读:244 留言:0更新日期:2013-04-04 15:37
本发明专利技术提供一种基于消息队列的分布式方法和系统。该基于消息队列的分布式方法包括:由第一应用向队列管理器发送消息;确定所述消息是否成功发送;如果确定没有成功发送所述消息,则所述消息被放入第一异常处理模块进行处理;如果确定已经成功发送所述消息,则由所述队列管理器对所接收到的消息进行处理;将所述消息发送到第二应用;以及由所述第二应用对所接收到的消息进行处理。

【技术实现步骤摘要】
基于消息队列的分布式方法和系统
本专利技术涉及一种基于消息中间件的分布式方法和系统,更具体地,涉及一种基于消息队列的分布式方法和系统。
技术介绍
在大规模分布式系统中,消息中间件(message-orientedmiddleware,MOM)被广泛使用。消息中间件是一种由消息传输机制或消息队列模式组成的中间件技术。消息中间件利用高效可靠的消息传输机制进行平台无关的数据交流,并且基于数据通信来进行分布式系统的集成。通常,消息中间件并不要求系统具备一个可靠的底部传输层,而是通过以消息的形式收发应用程序数据来连接运行于不同系统上的应用程序。信息可以同步传送,也支持异步传送。在异步方式下,应用程序并不需要消息即时即刻传送到对方,只是由MOM确保把信息以消息的方式传送到适当的目的地,并且只传一次。消息队列(MQ)(MessageQueuing)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入队列的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。MQ具有异步通信、消息路由可靠、安全性、协议无关性等优点。然而,在大规模分布式系统,如果使用通常的MQ解决方案,存在诸多缺点,包括:消费消息阻塞;MQ单点;发送消息阻塞;消息不匹配;MQ/消息无监控;消息顺序不一致;死信队列无法处理。因此,需要一种用于增强MQ方案的基于消息队列的分布式方法和系统。专
技术实现思路
根据本专利技术的一方面,提供了一种基于消息队列的分布式方法,包括:由第一应用向队列管理器发送消息;确定所述消息是否成功发送;如果确定没有成功发送所述消息,则所述消息被放入第一异常处理模块进行处理;如果确定已经成功发送所述消息,则由所述队列管理器对所接收到的消息进行处理;将所述消息发送到第二应用;以及由所述第二应用对所接收到的消息进行处理。根据本专利技术的一个实施例,所述由所述队列管理器对所接收到的消息进行处理的步骤进一步包括:确定所述消息是否是死信;以及如果确定所述消息是死信,则所述消息被放入死信处理模块以进行处理。根据本专利技术的一个实施例,所述由第二应用对所接收到的消息进行处理的步骤进一步包括:确定所述第二应用是否已经成功处理了所述消息;以及如果确定没有成功处理所述消息,则所述消息被放入第二异常处理模块进行处理。根据本专利技术的一个实施例,所述消息被放入第一异常处理模块进行处理的步骤进一步包括:确定所述第一异常处理模块是否已经成功处理了所述消息;如果确定没有成功处理所述消息,则向监控模块报告该情况;以及如果确定已经成功处理了所述消息,则将所述消息发送到所述队列管理器。根据本专利技术的一个实施例,所述消息被放入死信处理模块以进行处理的步骤进一步包括:确定所述死信处理模块是否已经成功处理所述消息;以及如果确定没有成功处理所述消息,则向监控模块报告该情况。根据本专利技术的一个实施例,所述消息被放入第二异常处理模块进行处理的步骤进一步包括:确定所述第二异常处理模块是否已经成功处理了所述消息;以及如果确定没有成功处理所述消息,则向监控模块报告该情况。根据本专利技术的一个实施例,在所述第一应用向所述队列管理器发送所述消息之前,注册模块可以对所述消息进行匹配检查,并且仅当所述消息匹配时,才继续后续操作。根据本专利技术的一个实施例,所述队列管理器是队列管理器集群。根据本专利技术的一个实施例,所述由队列管理器对所接收到的消息进行处理进一步包括:确定所述队列管理器集群中的一个队列管理器未能正常工作;隔离所述一个队列管理器,使得不会再有新的消息路由到所述一个队列管理器;以及由其余的队列管理器接管所述一个队列管理器的工作。根据本专利技术的一个实施例,所述确定所述第一异常处理模块是否已经成功处理了所述消息的步骤在预定时间间隔之后执行。根据本专利技术的一个实施例,所述确定所述死信处理模块是否已经成功处理所述消息的步骤在预定时间间隔之后执行。根据本专利技术的一个实施例,所述确定所述第二异常处理模块是否已经成功处理了所述消息的步骤在预定时间间隔之后执行。根据本专利技术的一方面,提供了一种基于消息队列的分布式系统,包括:第一应用,所述第一应用被配置成向队列管理器发送消息;第一异常处理模块,所述第一异常处理模块连接到所述第一应用,并且被配置成对所述第一应用没有成功发送的消息进行处理;队列管理器,所述队列管理器与所述第一应用和所述第一异常处理模块相连,并且被配置成对所接收到的消息进行处理并且将所述消息发送到第二应用;以及第二应用,所述第二应用连接到所述队列管理器,并且被配置成对所接收到的消息进行处理。根据本专利技术的一个实施例,所述系统进一步包括监控模块,所述监控模块被配置成对所述第一应用、所述队列管理器和所述第二应用进行监控。根据本专利技术的一个实施例,所述队列管理器进一步包括死信处理模块,所述死信处理模块被配置成对死信进行处理。根据本专利技术的一个实施例,所述第二应用进一步包括第二异常处理模块,所述第二异常处理模块被配置成对所述第二应用没有成功处理的消息进行处理。根据本专利技术的一个实施例,所述第一异常处理模块进一步被配置成:确定是否已经成功处理了所述消息;如果确定没有成功处理所述消息,则向所述监控模块报告该情况;以及如果确定已经成功处理了所述消息,则将所述消息发送到所述队列管理器。根据本专利技术的一个实施例,所述死信处理模块进一步被配置成:确定所述死信处理模块是否已经成功处理所述消息;以及如果确定没有成功处理所述消息,则向所述监控模块报告该情况。根据本专利技术的一个实施例,所述第二异常处理模块进一步被配置成:确定是否已经成功处理了所述消息;以及如果确定没有成功处理所述消息,则向所述监控模块报告该情况。根据本专利技术的一个实施例,所述系统进一步包括注册模块,所述注册模块被配置成对所述消息进行匹配检查,并且仅当所述消息匹配时,才继续后续操作。根据本专利技术的一个实施例,所述队列管理器是队列管理器集群。根据本专利技术的一个实施例,所述队列管理器集群进一步被配置成:确定所述队列管理器集群中的一个队列管理器未能正常工作;隔离所述一个队列管理器,使得不会再有新的消息路由到所述一个队列管理器;以及由其余的队列管理器接管所述一个队列管理器的工作。根据本专利技术的一个实施例,所述第一异常处理模块进一步被配置成:在预定时间间隔之后,确定是否已经成功处理了所述消息。根据本专利技术的一个实施例,所述死信处理模块进一步被配置成:在预定时间间隔之后,确定是否已经成功处理所述消息。根据本专利技术的一个实施例,所述第二异常处理模块进一步被配置成:在预定时间间隔之后,确定是否已经成功处理了所述消息。根据本专利技术的基于消息队列的分布式方法和系统针对大规模分布式系统,对MQ解决方案进行了有效改进,解决了存在的诸多缺点,包括消费消息阻塞;MQ单点;发送消息阻塞;消息不匹配;MQ/消息无监控;消息顺序不一致;死信队列无法处理等问题,从而实现了具有高效实时、高扩展性、系统松耦合的分布式方法和系统。附图说明附图图示了本专利技术的实施例,并与说明书一起用于解释本专利技术的原理。在附图中:图1图示了根据本专利技术的实施本文档来自技高网
...
基于消息队列的分布式方法和系统

【技术保护点】
一种基于消息队列的分布式方法,包括:由第一应用向队列管理器发送消息;确定所述消息是否成功发送;如果确定没有成功发送所述消息,则所述消息被放入第一异常处理模块进行处理;如果确定已经成功发送所述消息,则由所述队列管理器对所接收到的消息进行处理;将所述消息发送到第二应用;以及由所述第二应用对所接收到的消息进行处理。

【技术特征摘要】
1.一种基于消息队列的分布式方法,包括:由第一应用向队列管理器发送消息;确定所述消息是否成功发送;如果确定没有成功发送所述消息,则所述消息被放入第一异常处理模块进行处理,包括:对进入所述第一异常处理模块的没有成功处理的消息设定优先级,并根据优先级对这些消息进行处理;如果所述第一异常处理模块对没有成功处理的消息进行处理的次数或时间达到预定阈值仍然不成功,则提示进行人工处理;如果确定已经成功发送所述消息,则由所述队列管理器对所接收到的消息进行处理;将所述消息发送到第二应用;以及由所述第二应用对所接收到的消息进行处理,其中所述由所述队列管理器对所接收到的消息进行处理的步骤进一步包括:确定所述消息是否是死信;以及如果确定所述消息是死信,则所述消息被放入死信处理模块进行处理,以预定的时间间隔和/或次数重发、转发或删除所述消息。2.根据权利要求1所述的方法,其中所述由第二应用对所接收到的消息进行处理的步骤进一步包括:确定所述第二应用是否已经成功处理了所述消息;以及如果确定没有成功处理所述消息,则所述消息被放入第二异常处理模块进行处理。3.根据权利要求1所述的方法,其中所述消息被放入第一异常处理模块进行处理的步骤进一步包括:确定所述第一异常处理模块是否已经成功处理了所述消息;如果确定没有成功处理所述消息,则向监控模块报告该情况;以及如果确定已经成功处理了所述消息,则将所述消息发送到所述队列管理器。4.根据权利要求1所述的方法,其中所述消息被放入死信处理模块以进行处理的步骤进一步包括:确定所述死信处理模块是否已经成功处理所述消息;以及如果确定没有成功处理所述消息,则向监控模块报告该情况。5.根据权利要求2所述的方法,其中所述消息被放入第二异常处理模块进行处理的步骤进一步包括:确定所述第二异常处理模块是否已经成功处理了所述消息;以及如果确定没有成功处理所述消息,则向监控模块报告该情况。6.根据权利要求1所述的方法,其中在所述第一应用向所述队列管理器发送所述消息之前,注册模块可以对所述消息进行匹配检查,并且仅当所述消息匹配时,才继续后续操作。7.根据权利要求1所述的方法,其中所述队列管理器是队列管理器集群。8.根据权利要求7所述的方法,其中所述由队列管理器对所接收到的消息进行处理进一步包括:确定所述队列管理器集群中的一个队列管理器未能正常工作;隔离所述一个队列管理器,使得不会再有新的消息路由到所述一个队列管理器;以及由其余的队列管理器接管所述一个队列管理器的工作。9.根据权利要求3所述的方法,其中所述确定所述第一异常处理模块是否已经成功处理了所述消息的步骤在预定时间间隔之后执行。10.根据权利要求4所述的方法,其中所述确定所述死信处理模块是否已经成功处理所述消息的步骤在预定时间间隔之后执行。11.根据权利要求5所述的方法,其中所述确定所述第二异常处理模块是否已经成功处理了所述消息的步骤在预定时间间隔之后执行。12.一...

【专利技术属性】
技术研发人员:李鹏涛
申请(专利权)人:北京京东世纪贸易有限公司
类型:发明
国别省市:

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

1