[发明专利]基于消息队列的分布式方法和系统有效
申请号: | 201210410481.4 | 申请日: | 2012-10-24 |
公开(公告)号: | CN103019866B | 公开(公告)日: | 2017-02-08 |
发明(设计)人: | 李鹏涛 | 申请(专利权)人: | 北京京东世纪贸易有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 中原信达知识产权代理有限责任公司11219 | 代理人: | 李宝泉,周亚荣 |
地址: | 100176 北京市北京经济*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 消息 队列 分布式 方法 系统 | ||
技术领域
本发明涉及一种基于消息中间件的分布式方法和系统,更具体地,涉及一种基于消息队列的分布式方法和系统。
背景技术
在大规模分布式系统中,消息中间件(message-oriented middleware,MOM)被广泛使用。消息中间件是一种由消息传输机制或消息队列模式组成的中间件技术。消息中间件利用高效可靠的消息传输机制进行平台无关的数据交流,并且基于数据通信来进行分布式系统的集成。
通常,消息中间件并不要求系统具备一个可靠的底部传输层,而是通过以消息的形式收发应用程序数据来连接运行于不同系统上的应用程序。信息可以同步传送,也支持异步传送。在异步方式下,应用程序并不需要消息即时即刻传送到对方,只是由MOM确保把信息以消息的方式传送到适当的目的地,并且只传一次。
消息队列(MQ)(Message Queuing)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入队列的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。MQ具有异步通信、消息路由可靠、安全性、协议无关性等优点。
然而,在大规模分布式系统,如果使用通常的MQ解决方案,存在诸多缺点,包括:消费消息阻塞;MQ单点;发送消息阻塞;消息不匹配;MQ/消息无监控;消息顺序不一致;死信队列无法处理。
因此,需要一种用于增强MQ方案的基于消息队列的分布式方法和系统。
发明内容
根据本发明的一方面,提供了一种基于消息队列的分布式方法,包括:由第一应用向队列管理器发送消息;确定所述消息是否成功发送;如果确定没有成功发送所述消息,则所述消息被放入第一异常处理模块进行处理;如果确定已经成功发送所述消息,则由所述队列管理器对所接收到的消息进行处理;将所述消息发送到第二应用;以及由所述第二应用对所接收到的消息进行处理。
根据本发明的一个实施例,所述由所述队列管理器对所接收到的消息进行处理的步骤进一步包括:确定所述消息是否是死信;以及如果确定所述消息是死信,则所述消息被放入死信处理模块以进行处理。
根据本发明的一个实施例,所述由第二应用对所接收到的消息进行处理的步骤进一步包括:确定所述第二应用是否已经成功处理了所述消息;以及如果确定没有成功处理所述消息,则所述消息被放入第二异常处理模块进行处理。
根据本发明的一个实施例,所述消息被放入第一异常处理模块进行处理的步骤进一步包括:确定所述第一异常处理模块是否已经成功处理了所述消息;如果确定没有成功处理所述消息,则向监控模块报告该情况;以及如果确定已经成功处理了所述消息,则将所述消息发送到所述队列管理器。
根据本发明的一个实施例,所述消息被放入死信处理模块以进行处理的步骤进一步包括:确定所述死信处理模块是否已经成功处理所述消息;以及如果确定没有成功处理所述消息,则向监控模块报告该情况。
根据本发明的一个实施例,所述消息被放入第二异常处理模块进行处理的步骤进一步包括:确定所述第二异常处理模块是否已经成功处理了所述消息;以及如果确定没有成功处理所述消息,则向监控模块报告该情况。
根据本发明的一个实施例,在所述第一应用向所述队列管理器发送所述消息之前,注册模块可以对所述消息进行匹配检查,并且仅当所述消息匹配时,才继续后续操作。
根据本发明的一个实施例,所述队列管理器是队列管理器集群。
根据本发明的一个实施例,所述由队列管理器对所接收到的消息进行处理进一步包括:确定所述队列管理器集群中的一个队列管理器未能正常工作;隔离所述一个队列管理器,使得不会再有新的消息路由到所述一个队列管理器;以及由其余的队列管理器接管所述一个队列管理器的工作。
根据本发明的一个实施例,所述确定所述第一异常处理模块是否已经成功处理了所述消息的步骤在预定时间间隔之后执行。
根据本发明的一个实施例,所述确定所述死信处理模块是否已经成功处理所述消息的步骤在预定时间间隔之后执行。
根据本发明的一个实施例,所述确定所述第二异常处理模块是否已经成功处理了所述消息的步骤在预定时间间隔之后执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东世纪贸易有限公司,未经北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210410481.4/2.html,转载请声明来源钻瓜专利网。