CN105159657A - 处理消息的方法和系统 - Google Patents
处理消息的方法和系统 Download PDFInfo
- Publication number
- CN105159657A CN105159657A CN201510324415.9A CN201510324415A CN105159657A CN 105159657 A CN105159657 A CN 105159657A CN 201510324415 A CN201510324415 A CN 201510324415A CN 105159657 A CN105159657 A CN 105159657A
- Authority
- CN
- China
- Prior art keywords
- message
- pending
- queue
- message queue
- multinomial
- 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
Landscapes
- Telephonic Communication Services (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明的主要目的是提供一种处理消息的方法和系统,有助于提高消息处理的效率。本发明的处理消息的方法包括:接收多项待处理消息然后持久化保存,从而形成待处理原始消息队列;依次从所述待处理原始消息队列取出消息然后保存到待处理消息队列,其中若该待处理消息队列中已存在该消息,则丢弃该消息;对所述待处理消息队列中的消息进行处理。
Description
技术领域
本发明涉及计算机技术领域,特别地涉及一种处理消息的方法和系统。
背景技术
在大多数有任务处理的系统中都会涉及到消息队列,通过消息队列来解耦合各个系统,减少各系统之间的依赖,提高稳定性。目前有许多技术来实现消息队列的实现及处理,例如activemq、kafka等。
对于电子商务系统,管理员往往需要经常修改商品信息,其中可能存在前后两次修改内容相同,此时形成前后相同的待处理消息,相应产生两个相同调用,从而影响消息处理的效率。
发明内容
有鉴于此,本发明的主要目的是提供一种处理消息的方法和系统,有助于提高消息处理的效率。本发明的其他目的可结合具体实施方式得出。
为实现上述目的,根据本发明的一个方面,提供了一种处理消息的方法。
本发明的处理消息的方法包括:接收多项待处理消息然后持久化保存,从而形成待处理原始消息队列;依次从所述待处理原始消息队列取出消息然后保存到待处理消息队列,其中若该待处理消息队列中已存在该消息,则丢弃该消息;对所述待处理消息队列中的消息进行处理。
可选地,接收多项待处理消息然后持久化保存的步骤包括:接收应用系统产生的多项待处理消息,然后使用Redis的持久化机制将所述多项待处理消息持久化保存;依次从所述待处理原始消息队列取出消息然后保存到待处理消息队列的步骤包括:使用Redis删除命令将消息从所述待处理原始消息队列中删除并且将该消息插入到待处理消息队列。
可选地,对所述待处理消息队列中的消息进行处理的步骤包括:分布式消息处理系统中的消息处理装置之间互不重复地从待处理消息队列获取多项待处理消息然后保存到本地从而形成本地待处理消息队列,再对该本地待处理消息队列进行处理。
可选地,对于所述对该本地待处理消息队列进行处理的步骤,在消息处理成功的情况下,该方法还包括:删除该消息;在消息处理不成功的情况下,该方法还包括:对该消息重试预设次数的处理,在处理成功的情况下,删除该消息,在处理不成功的情况下,将该消息保存到全局失败队列。
可选地,还包括:所述消息处理装置在重启之前,将本地待处理消息队列发送给所述分布式消息处理系统中的其他消息处理装置。
根据本发明的另一方面,提供了一种处理消息的系统。
本发明的处理消息的系统包括:消息预处理系统,用于接收多项待处理消息然后持久化保存,从而形成待处理原始消息队列;依次从所述待处理原始消息队列取出消息然后保存到待处理消息队列,其中若该待处理消息队列中已存在该消息,则丢弃该消息;消息处理系统,用于对所述待处理消息队列中的消息进行处理。
可选地,所述消息预处理系统还用于:接收应用系统产生的多项待处理消息,然后使用Redis的持久化机制将所述多项待处理消息持久化保存;使用Redis删除命令将消息从所述待处理原始消息队列中删除并且将该消息插入到待处理消息队列。
可选地,所述消息处理系统为分布式消息处理系统,包含多个消息处理装置,所述多个消息处理装置用于互不重复地从待处理消息队列获取多项待处理消息然后保存到本地从而形成本地待处理消息队列,再对该本地待处理消息队列进行处理。
可选地,所述消息处理装置还用于在对本地待处理消息队列进行处理时,在消息处理成功的情况下,删除该消息;在消息处理不成功的情况下,对该消息重试预设次数的处理,在处理成功的情况下,删除该消息,在处理不成功的情况下,将该消息保存到全局失败队列。
可选地,所述消息处理装置还用于在重启之前,将本地待处理消息队列发送给所述消息处理系统中的其他消息处理装置。
根据本发明的技术方案,按照待处理原始消息队列形成待处理消息队列,并且待处理消息队列中的消息互不重复,这样能够避免产生先后处理相同消息的现象,从而有助于提高消息处理的效率。另外在本发明中,消息处理装置获取多项消息之后保存到本地,再对本地消息加以处理,无需消息处理装置反复单独从待处理消息队列中获取消息,有助于避免获取消息时产生的冲突。在多次处理消息仍失败的情况下将该消息保存到全局失败队列,有助于保证消息被遗漏处理。在消息处理装置需要重启的情况下,将消息转由其他消息处理装置处理,有助于尽快处理这些消息或者避免其被遗漏处理。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施方式的处理消息的方法的主要步骤的示意图;
图2是根据本发明实施方式的消息的组织状态的示意图;
图3是根据本发明实施方式的处理消息的系统的基本结构的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施方式的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施方式做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施方式的处理消息的方法的主要步骤的示意图。该方法可以由本发明实施方式中的消息处理系统来执行。如图1所示,该方法主要包括如下的步骤S11至步骤S16。
步骤S11:接收多项待处理消息。应用系统例如Java应用系统会产生消息并且向消息处理系统发送。在接收消息时可按预先设置的周期接收消息,周期结束时批量对消息进行处理。这样能够在合适设定的周期下,尽可能地接收到可能存在的重复消息,从而在步骤S13中,将重复的消息消除。否则可能出现的一种情况是,某两个相同消息分别存在于不同的待处理原始消息队列中,在这种情况下,即使经过步骤S13,仍有相同消息分别存在于两个待处理消息队列,造成消息的重复处理从而影响效率。
步骤S12:对接收的多项待处理消息持久化保存。以采用Redis作为数据库为例,可采用RedisLua脚本来获取消息,然后利用Redis的持久化机制将上述待处理消息保存到磁盘或其他持久化存储介质上。在本步骤的持久化保存之后,即形成了待处理原始消息队列。进行持久化保存可保证在计算设备断电情况下不丢失消息。
步骤S13:依次从待处理原始消息队列取出消息然后保存到待处理消息队列。在本步骤中,在向待处理消息队列中保存消息时,如果该消息已经存在于待处理消息队列,则丢弃该消息,意即不向待处理消息队列保存该消息,通过这种方式,使待处理消息队列中的各消息互不重复。以采用Redis作为数据库为例,可使用Redis删除命令将消息从待处理原始消息队列中删除并且将该消息插入到待处理消息队列。
步骤S14:对于待处理消息队列中的消息进行处理。为了提高消息处理效率,可采用分布式处理系统,其中包含多个消息处理装置,这些消息处理装置可以是服务器中的线程,能够互不重复地从待处理消息队列分批次地获取多项待处理消息,例如在从待处理原始消息队列获取消息之后向待处理原始消息队列中的该消息添加标记,或者在获取该消息后直接从待处理原始消息队列删除该消息。然后将获取的待处理消息保存到本地以形成本地待处理消息队列。按时间顺序,消息的组织状态如图2所示,图2是根据本发明实施方式的消息的组织状态的示意图。其中,待处理原始消息队列21中包含的消息中可能有重复消息,但在待处理消息队列22中,各消息互不重复,本地待处理消息队列231、232、……、23N分别位于各个消息处理装置本地,由消息处理装置分别进行处理,这样无需消息处理装置反复单独从待处理消息队列中获取消息,有助于避免获取消息时产生的冲突。
从以上步骤可以看出,待处理消息队列中的消息互不重复,不会产生先后处理相同消息的现象,从而有助于提高消息处理的效率。
消息处理装置在成功处理本地消息的情况下,将该消息删除以节省存储空间;若消息处理失败,则进行重试,若重试次数达到设定值时仍未处理成功,则将消息保存到全局失败队列。可由人员对该全局失败对列加以处理。
消息处理装置如果需要重启,则最好是先将本地的消息发送给上述的分布式消息处理系统中的其他消息处理装置,以尽快处理这些消息或者避免消息被遗漏处理。
图3是根据本发明实施方式的处理消息的系统的基本结构的示意图。如图3所示,处理消息的系统30主要包括消息预处理系统31和消息处理系统32。消息预处理系统31用于接收多项待处理消息然后持久化保存,从而形成待处理原始消息队列;依次从待处理原始消息队列取出消息然后保存到待处理消息队列,其中若该待处理消息队列中已存在该消息,则丢弃该消息。消息处理系统32用于对上述的待处理消息队列中的消息进行处理。
消息预处理系统31还可用于接收应用系统产生的多项待处理消息,然后使用Redis的持久化机制将该多项待处理消息持久化保存;使用Redis删除命令将消息从上述待处理原始消息队列中删除并且将该消息插入到待处理消息队列。
上述消息处理系统32可以是分布式消息处理系统,包含多个消息处理装置(图中未示出),这些消息处理装置可用于互不重复地从待处理消息队列获取多项待处理消息然后保存到本地形成本地待处理消息队列,再对该本地待处理消息队列进行处理。
上述消息处理装置还可用于在对本地待处理消息队列进行处理时,在消息处理成功的情况下删除该消息;在消息处理不成功的情况下对该消息重试预设次数的处理,在处理成功的情况下,删除该消息,在处理不成功的情况下,将该消息保存到全局失败队列。上述消息处理装置还可用于在重启之前,将本地待处理消息队列发送给消息处理系统32中的其他消息处理装置。
根据本发明的实施方式,按照待处理原始消息队列形成待处理消息队列,并且待处理消息队列中的消息互不重复,这样能够避免产生先后处理相同消息的现象,从而有助于提高消息处理的效率。另外在本发明的实施方式中,消息处理装置获取多项消息之后保存到本地,再对本地消息加以处理,无需消息处理装置反复单独从待处理消息队列中获取消息,有助于避免获取消息时产生的冲突。在多次处理消息仍失败的情况下将该消息保存到全局失败队列,有助于保证消息被遗漏处理。在消息处理装置需要重启的情况下,将消息转由其他消息处理装置处理,有助于尽快处理这些消息或者避免其被遗漏处理。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种处理消息的方法,其特征在于,包括:
接收多项待处理消息然后持久化保存,从而形成待处理原始消息队列;
依次从所述待处理原始消息队列取出消息然后保存到待处理消息队列,其中若该待处理消息队列中已存在该消息,则丢弃该消息;
对所述待处理消息队列中的消息进行处理。
2.根据权利要求1所述的方法,其特征在于,
接收多项待处理消息然后持久化保存的步骤包括:接收应用系统产生的多项待处理消息,然后使用Redis的持久化机制将所述多项待处理消息持久化保存;
依次从所述待处理原始消息队列取出消息然后保存到待处理消息队列的步骤包括:使用Redis删除命令将消息从所述待处理原始消息队列中删除并且将该消息插入到待处理消息队列。
3.根据权利要求1所述的方法,其特征在于,对所述待处理消息队列中的消息进行处理的步骤包括:分布式消息处理系统中的消息处理装置之间互不重复地从待处理消息队列获取多项待处理消息然后保存到本地从而形成本地待处理消息队列,再对该本地待处理消息队列进行处理。
4.根据权利要求3所述的方法,其特征在于,对于所述对该本地待处理消息队列进行处理的步骤,在消息处理成功的情况下,该方法还包括:删除该消息;在消息处理不成功的情况下,该方法还包括:对该消息重试预设次数的处理,在处理成功的情况下,删除该消息,在处理不成功的情况下,将该消息保存到全局失败队列。
5.根据权利要求3所述的方法,其特征在于,还包括:所述消息处理装置在重启之前,将本地待处理消息队列发送给所述分布式消息处理系统中的其他消息处理装置。
6.一种处理消息的系统,其特征在于,包括:
消息预处理系统,用于接收多项待处理消息然后持久化保存,从而形成待处理原始消息队列;依次从所述待处理原始消息队列取出消息然后保存到待处理消息队列,其中若该待处理消息队列中已存在该消息,则丢弃该消息;
消息处理系统,用于对所述待处理消息队列中的消息进行处理。
7.根据权利要求6所述的系统,其特征在于,所述消息预处理系统还用于:接收应用系统产生的多项待处理消息,然后使用Redis的持久化机制将所述多项待处理消息持久化保存;使用Redis删除命令将消息从所述待处理原始消息队列中删除并且将该消息插入到待处理消息队列。
8.根据权利要求6所述的系统,其特征在于,所述消息处理系统为分布式消息处理系统,包含多个消息处理装置,所述多个消息处理装置用于互不重复地从待处理消息队列获取多项待处理消息然后保存到本地从而形成本地待处理消息队列,再对该本地待处理消息队列进行处理。
9.根据权利要求8所述的系统,其特征在于,所述消息处理装置还用于在对本地待处理消息队列进行处理时,在消息处理成功的情况下,删除该消息;在消息处理不成功的情况下,对该消息重试预设次数的处理,在处理成功的情况下,删除该消息,在处理不成功的情况下,将该消息保存到全局失败队列。
10.根据权利要求8所述的系统,其特征在于,所述消息处理装置还用于在重启之前,将本地待处理消息队列发送给所述消息处理系统中的其他消息处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510324415.9A CN105159657B (zh) | 2015-06-12 | 2015-06-12 | 处理消息的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510324415.9A CN105159657B (zh) | 2015-06-12 | 2015-06-12 | 处理消息的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105159657A true CN105159657A (zh) | 2015-12-16 |
CN105159657B CN105159657B (zh) | 2019-03-08 |
Family
ID=54800524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510324415.9A Active CN105159657B (zh) | 2015-06-12 | 2015-06-12 | 处理消息的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159657B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105760236A (zh) * | 2016-05-13 | 2016-07-13 | 中国工商银行股份有限公司 | 一种分布式计算机集群下的数据采集方法及系统 |
CN105812235A (zh) * | 2016-03-04 | 2016-07-27 | 百度在线网络技术(北京)有限公司 | 消息处理方法、装置及系统 |
CN106331153A (zh) * | 2016-09-20 | 2017-01-11 | 北京华为数字技术有限公司 | 一种业务请求的过滤方法、装置及系统 |
CN107222530A (zh) * | 2017-05-23 | 2017-09-29 | 努比亚技术有限公司 | 服务异步交互方法、设备、系统和可读介质 |
CN107220226A (zh) * | 2016-03-21 | 2017-09-29 | 上海鸣皋教育科技有限公司 | 一种创课方法及系统 |
CN107423145A (zh) * | 2017-07-11 | 2017-12-01 | 北京潘达互娱科技有限公司 | 一种避免消息丢失的方法与装置 |
CN107480297A (zh) * | 2017-08-30 | 2017-12-15 | 福建中金在线信息科技有限公司 | 一种文章收录方法及装置 |
CN108279988A (zh) * | 2018-01-25 | 2018-07-13 | 微梦创科网络科技(中国)有限公司 | 一种基于Lua脚本语言的消息处理方法及系统 |
CN108920144A (zh) * | 2017-04-11 | 2018-11-30 | 北京京东尚科信息技术有限公司 | 一种消息处理方法和装置 |
CN110955532A (zh) * | 2018-09-27 | 2020-04-03 | 北京国双科技有限公司 | 消息处理方法、装置及计算机设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770484A (zh) * | 2008-12-31 | 2010-07-07 | 北大方正集团有限公司 | 一种网站更新实时发布的方法及系统 |
CN102023974A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种通过消息队列处理消息的方法、装置和系统 |
CN102662776A (zh) * | 2012-04-01 | 2012-09-12 | 杭州格畅科技有限公司 | 在线应用平台的应用间通信方法、客户端及应用进程管理器 |
CN103516585A (zh) * | 2012-06-29 | 2014-01-15 | 北京奇虎科技有限公司 | 一种实现消息优先级分发的方法及系统 |
CN103532755A (zh) * | 2013-10-12 | 2014-01-22 | 北京奇虎科技有限公司 | 分布式异步事件的处理方法及系统 |
CN103838659A (zh) * | 2014-02-17 | 2014-06-04 | 大唐移动通信设备有限公司 | 一种系统日志的控制方法和装置 |
CN103886079A (zh) * | 2014-03-26 | 2014-06-25 | 北京京东尚科信息技术有限公司 | 一种数据处理方法和系统 |
-
2015
- 2015-06-12 CN CN201510324415.9A patent/CN105159657B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770484A (zh) * | 2008-12-31 | 2010-07-07 | 北大方正集团有限公司 | 一种网站更新实时发布的方法及系统 |
CN102023974A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种通过消息队列处理消息的方法、装置和系统 |
CN102662776A (zh) * | 2012-04-01 | 2012-09-12 | 杭州格畅科技有限公司 | 在线应用平台的应用间通信方法、客户端及应用进程管理器 |
CN103516585A (zh) * | 2012-06-29 | 2014-01-15 | 北京奇虎科技有限公司 | 一种实现消息优先级分发的方法及系统 |
CN103532755A (zh) * | 2013-10-12 | 2014-01-22 | 北京奇虎科技有限公司 | 分布式异步事件的处理方法及系统 |
CN103838659A (zh) * | 2014-02-17 | 2014-06-04 | 大唐移动通信设备有限公司 | 一种系统日志的控制方法和装置 |
CN103886079A (zh) * | 2014-03-26 | 2014-06-25 | 北京京东尚科信息技术有限公司 | 一种数据处理方法和系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105812235A (zh) * | 2016-03-04 | 2016-07-27 | 百度在线网络技术(北京)有限公司 | 消息处理方法、装置及系统 |
CN105812235B (zh) * | 2016-03-04 | 2020-05-29 | 百度在线网络技术(北京)有限公司 | 消息处理方法、装置及系统 |
CN107220226A (zh) * | 2016-03-21 | 2017-09-29 | 上海鸣皋教育科技有限公司 | 一种创课方法及系统 |
CN105760236A (zh) * | 2016-05-13 | 2016-07-13 | 中国工商银行股份有限公司 | 一种分布式计算机集群下的数据采集方法及系统 |
CN106331153A (zh) * | 2016-09-20 | 2017-01-11 | 北京华为数字技术有限公司 | 一种业务请求的过滤方法、装置及系统 |
CN106331153B (zh) * | 2016-09-20 | 2019-10-25 | 北京华为数字技术有限公司 | 一种业务请求的过滤方法、装置及系统 |
CN108920144A (zh) * | 2017-04-11 | 2018-11-30 | 北京京东尚科信息技术有限公司 | 一种消息处理方法和装置 |
CN108920144B (zh) * | 2017-04-11 | 2022-02-01 | 北京京东尚科信息技术有限公司 | 一种消息处理方法和装置 |
CN107222530A (zh) * | 2017-05-23 | 2017-09-29 | 努比亚技术有限公司 | 服务异步交互方法、设备、系统和可读介质 |
CN107423145A (zh) * | 2017-07-11 | 2017-12-01 | 北京潘达互娱科技有限公司 | 一种避免消息丢失的方法与装置 |
CN107480297A (zh) * | 2017-08-30 | 2017-12-15 | 福建中金在线信息科技有限公司 | 一种文章收录方法及装置 |
CN108279988A (zh) * | 2018-01-25 | 2018-07-13 | 微梦创科网络科技(中国)有限公司 | 一种基于Lua脚本语言的消息处理方法及系统 |
CN108279988B (zh) * | 2018-01-25 | 2021-07-23 | 微梦创科网络科技(中国)有限公司 | 一种基于Lua脚本语言的消息处理方法及系统 |
CN110955532A (zh) * | 2018-09-27 | 2020-04-03 | 北京国双科技有限公司 | 消息处理方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105159657B (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159657A (zh) | 处理消息的方法和系统 | |
CN108769099B (zh) | 一种消息中间件的消息去重的实现方法 | |
CN108667719B (zh) | 一种实时消息传递方法及系统 | |
CN107370667B (zh) | 多线程并行处理方法和装置、可读介质和存储控制器 | |
CN109391646B (zh) | 消息中间件消息获取方法、装置和系统 | |
CN104754036A (zh) | 一种基于kafka的消息处理系统及处理方法 | |
US11019145B2 (en) | Data synchronization method and synchronization service device | |
CN104604189A (zh) | 大型企业的高效状态发布机制 | |
CN104346401B (zh) | 云管理平台中各组件间消息转发的方法与装置 | |
CN106034113A (zh) | 数据处理方法及装置 | |
US8874675B2 (en) | Message thread management using dynamic pointers | |
CN112416614A (zh) | 基于消息队列的数据处理方法、系统及服务器 | |
CN105095299A (zh) | 图片抓取方法和系统 | |
CN110659124A (zh) | 一种消息处理方法和装置 | |
US10938633B2 (en) | Facilitating resilient and fault tolerant asynchronous messaging | |
CN107548039B (zh) | 一种短消息重试处理方法及装置、系统 | |
CN112925642A (zh) | 一种延迟消息处理方法、装置、设备及存储介质 | |
CN114063936B (zh) | 一种优化定时任务的方法、系统、设备和存储介质 | |
CN108595121B (zh) | 数据存储方法和装置 | |
CN105447000A (zh) | 一种事务消息的传输方法和设备 | |
CN112099864B (zh) | 一种异步数据的处理方法及装置 | |
CN107357808B (zh) | 数据管理方法、装置及设备 | |
CN111708835B (zh) | 区块链数据存储方法及装置 | |
CN108737246B (zh) | 消息下发方法、装置、存储介质和服务器 | |
CN116633874A (zh) | 基于阻塞队列的消息处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |