CN110995851A - 消息处理方法、装置、存储介质及设备 - Google Patents
消息处理方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN110995851A CN110995851A CN201911270196.5A CN201911270196A CN110995851A CN 110995851 A CN110995851 A CN 110995851A CN 201911270196 A CN201911270196 A CN 201911270196A CN 110995851 A CN110995851 A CN 110995851A
- Authority
- CN
- China
- Prior art keywords
- message
- retry
- distributed system
- consumed
- token
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供一种消息处理方法、装置、存储介质及设备,属于计算机技术领域,解决了现有技术中在补偿发送或消费失败的分布式系统消息时,极易出现消息丢失的问题。所述方法包括:检测分布式系统消息是否处理失败;当检测到分布式系统消息处理失败时,判断分布式系统消息中标记的重试次数是否达到重试阈值;当重试次数没有达到所述重试阈值时,重新处理分布式系统消息,并更新重试次数;当重试次数达到重试阈值时,将分布式系统消息存入缓存,并间隔预设时间将缓存中的分布式系统消息存入消息中心,以便消息中心根据分布式系统消息对应的处理指令,重新处理。本发明实施例适用于对分布式系统消息的发送和消费的处理过程。
Description
技术领域
本发明涉及计算机技术领域,具体地涉及一种消息处理方法、装置、存储介质及设备。
背景技术
在现有技术中,当生产者将消息发送到kafka集群以及消费者从kafka集群获取消息时,若是出现消息处理失败,都需要业务方自己进行消息的补偿和对账处理,极易出现消息丢失的情况。
发明内容
本发明实施例的目的是提供一种消息处理方法、装置、存储介质及设备,解决了现有技术中在补偿发送或消费失败的分布式系统消息时,极易出现消息丢失的问题,利用重试机制对上述处理失败的分布式系统消息重新进行处理,并将重试次数达到重试阈值之后的分布式系统消息存入缓存,然后间隔预设时间将缓存中的分布式系统消息存入消息中心,以便所述消息中心根据所述分布式系统消息对应的处理指令,重新处理,实现了发送消息与消费消息的一致性。
为了实现上述目的,本发明实施例提供一种消息处理方法,包括:检测分布式系统消息是否处理失败;当检测到所述分布式系统消息处理失败时,判断所述分布式系统消息中标记的重试次数是否达到重试阈值;当所述重试次数没有达到所述重试阈值时,重新处理所述分布式系统消息,并更新所述重试次数;当所述重试次数达到所述重试阈值时,将所述分布式系统消息存入缓存,并间隔预设时间将所述缓存中的分布式系统消息存入消息中心,以便所述消息中心根据所述分布式系统消息对应的处理指令,重新处理。
进一步地,当所述分布式系统消息为待发送消息时,在所述检测分布式系统消息是否处理失败的步骤之前,所述方法还包括:获取所述待发送消息,所述待发送消息中包括消息生产者的令牌、应用程序名称、路由密钥以及消息体,所述令牌中包括分区标识;提取所述待发送消息中令牌的分区标识,并判断所述分区标识是否为有序消息标识;当所述分区标识为有序消息标识时,将所述待发送消息的令牌作为其类别通过所述分区标识标记的分区进行发送;当所述分区标识不为有序消息标识时,根据所述应用程序名称、路由密钥以及所述分区标识,得到所述待发送消息的指定分区,并将所述待发送消息的令牌作为其类别通过所述指定分区进行发送。
进一步地,所述根据所述应用程序名称、路由密钥以及所述分区标识,得到所述待发送消息的指定分区的步骤,包括:根据Index=Hash(appName+routeKey)mod P,得到所述待发送消息的指定分区Index,其中,appName为所述应用程序名称,routeKey为所述路由密钥,P为所述分区标识。
进一步地,当所述分布式系统消息为待消费消息时,在所述检测分布式系统消息是否处理失败的步骤之前,所述方法还包括:获取所述待消费消息,所述待消费消息中包括消息生产者的令牌以及消息体;判断所述待消费消息中是否存在重试标识;当所述待消费消息中存在所述重试标识时,根据所述待消费消息的业务逻辑,判断所述待消费消息是否已经被消费过;当所述待消费消息已经被消费过,结束对所述待消费消息的处理;当所述待消费消息未被消费过,或所述待消费消息中不存在所述重试标识时,根据令牌与指定消费方法的映射关系,查找到所述待消费消息中的令牌对应的指定消费方法,并利用所述指定消费方法对所述待消费消息进行处理。
进一步地,当所述分布式系统消息为待消费消息时,所述当所述重试次数没有达到所述重试阈值时,重新处理所述分布式系统消息的步骤,包括:当所述重试次数没有达到所述重试阈值时,根据预设重试类型重新处理所述待消费消息,所述预设重试类型包括按次重试与延迟重试。
进一步地,当所述预设重试类型为所述延迟重试时,所述根据预设重试类型重新处理所述待消费消息的步骤,包括:将所述待消费消息放入延迟队列中,根据设定延迟时间,重新处理所述待消费消息。
相应的,本发明实施例还提供一种消息处理装置,包括:检测单元,用于检测分布式系统消息是否处理失败;第一判断单元,用于当检测到所述分布式系统消息处理失败时,判断所述分布式系统消息中标记的重试次数是否达到重试阈值;第一处理单元,用于当所述重试次数没有达到所述重试阈值时,重新处理所述分布式系统消息,并更新所述重试次数;第二处理单元,用于当所述重试次数达到所述重试阈值时,将所述分布式系统消息存入缓存,并间隔预设时间将所述缓存中的分布式系统消息存入消息中心,以便所述消息中心根据所述分布式系统消息对应的处理指令,重新处理。
进一步地,当所述分布式系统消息为待发送消息时,所述装置还包括:第一获取单元,用于获取所述待发送消息,所述待发送消息中包括消息生产者的令牌、应用程序名称、路由密钥以及消息体,所述令牌中包括分区标识;提取单元,用于提取所述待发送消息中令牌的分区标识;第二判断单元,用于判断所述分区标识是否为有序消息标识;发送单元,用于当所述分区标识为有序消息标识时,将所述待发送消息的令牌作为其类别通过所述分区标识标记的分区进行发送;当所述分区标识不为有序消息标识时,根据所述应用程序名称、路由密钥以及所述分区标识,得到所述待发送消息的指定分区,并将所述待发送消息的令牌作为其类别通过所述指定分区进行发送。
进一步地,所述发送单元还用于根据Index=Hash(appName+routeKey)mod P,得到所述待发送消息的指定分区Index,其中,appName为所述应用程序名称,routeKey为所述路由密钥,P为所述分区标识。
进一步地,当所述分布式系统消息为待消费消息时,所述装置还包括:第二获取单元,用于获取所述待消费消息,所述待消费消息中包括消息生产者的令牌以及消息体;第三判断单元,用于判断所述待消费消息中是否存在重试标识;第四判断单元,用于当所述待消费消息中存在所述重试标识时,根据所述待消费消息的业务逻辑,判断所述待消费消息是否已经被消费过;第三处理单元,用于当所述待消费消息已经被消费过,结束对所述待消费消息的处理;消费单元,用于当所述待消费消息未被消费过,或所述待消费消息中不存在所述重试标识时,根据令牌与指定消费方法的映射关系,查找到所述待消费消息中的令牌对应的指定消费方法,并利用所述指定消费方法对所述待消费消息进行处理。
进一步地,当所述分布式系统消息为待消费消息时,所述第一处理单元还用于当所述重试次数没有达到所述重试阈值时,根据预设重试类型重新处理所述待消费消息,所述预设重试类型包括按次重试与延迟重试。
进一步地,当所述预设重试类型为所述延迟重试时,所述第一处理单元还用于将所述待消费消息放入延迟队列中,根据设定延迟时间,重新处理所述待消费消息。
相应的,本发明实施例还提供一种设备,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器与所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如上所述的消息处理方法。
相应的,本发明实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上所述的消息处理方法。
通过上述技术方案,利用重试机制对上述处理失败的分布式系统消息重新进行处理,并将重试次数达到重试阈值之后的分布式系统消息存入缓存,然后间隔预设时间将缓存中的分布式系统消息存入消息中心,以便所述消息中心根据所述分布式系统消息对应的处理指令,重新处理。本发明实施例解决了现有技术中在补偿发送或消费失败的分布式系统消息时,极易出现消息丢失的问题,实现了发送消息与消费消息的一致性。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是本发明实施例提供的一种消息处理方法的流程示意图;
图2是本发明实施例提供的另一种消息处理方法的流程示意图;
图3是本发明实施例提供的又一种消息处理方法的流程示意图;
图4是本发明实施例提供的一种消息处理装置的结构示意图;
图5是本发明实施例提供的另一种消息处理装置的结构示意图;
图6是本发明实施例提供的又一种消息处理装置的结构示意图;
图7是本发明实施例提供的一种设备的结构示意图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
图1是本发明实施例提供的一种消息处理方法的流程示意图。如图1所示,所述方法可应用于生产侧或消费侧,所述方法包括如下步骤:
步骤101,检测分布式系统消息是否处理失败;
步骤102,当检测到所述分布式系统消息处理失败时,判断所述分布式系统消息中标记的重试次数是否达到重试阈值;
步骤103,当所述重试次数没有达到所述重试阈值时,重新处理所述分布式系统消息,并更新所述重试次数;
步骤104,当所述重试次数达到所述重试阈值时,将所述分布式系统消息存入缓存,并间隔预设时间将所述缓存中的分布式系统消息存入消息中心,以便所述消息中心根据所述分布式系统消息对应的处理指令,重新处理。
其中,本发明实施例中的分布式系统消息包括kafka消息。
其中,在处理分布式系统消息的时候,通过检测该分布式系统消息是否处理失败,若是该分布式系统消息处理成功,则结束所述分布式系统消息的后续处理。若是检测到所述分布式系统消息处理失败,则通过所述分布式系统消息中标记的重试次数判断是否达到重试阈值,若是没有达到,则可以重新处理所述分布式系统消息,并更新所述重试次数,例如,将所述分布式系统消息中的重试次数加1。若是达到了重试阈值,则将所述分布式系统消息存入缓存,并间隔预设时间将所述缓存中的分布式系统消息存入消息中心,也就是数据库中。其中,将所述分布式系统消息存入缓存后再存入数据库的目的,是因为每次接入数据库的连接数有限制,若是达到重试阈值的消息数过多,超过了数据库的可连接数,就会出现消息丢失的现象,也就不能达到本发明实施例避免消息丢失的目的。因此,先将超过重试阈值的消息存入缓存,缓存不存在连接数的限制,然后再将缓存中的消息通过一条连接存入数据库中。
在本发明实施例中,对于分布式系统消息的处理存在两种形式,一种是生产侧消息用户生成分布式系统消息后的发送处理,一种是消费侧用户对分布式系统消息的消费处理。无论是处于生产侧的用户,还是处于消费侧的用户,在用户要处理分布式系统消息之前,均需要申请接入系统的令牌,所述令牌中包括接入系统的系统标识以及分区标识。例如,令牌tcs-1550561229-006-1-00-dev中,tcs-1550561229-006表示了系统标识,之后的1表示分区标识,当该消息为生成侧发送的有序消息时,此处表示为1,并指定了一个分区用于发送消息,若是为无序消息,则默认为3。后面的00表示该令牌的用途。dev为环境标识,用于区分不同环境,如生产环境、测试环境等等。下面将分别从两方面对本发明实施例进行描述。
图2是本发明实施例提供的一种消息处理方法的流程示意图。如图2所示,所述方法应用于分布式系统消息的生产侧,包括如下步骤:
步骤201,获取所述待发送消息,所述待发送消息中包括消息生产者的令牌、应用程序名称、路由密钥以及消息体,所述令牌中包括分区标识,其中,所述待发送消息中还可以包括消息的生产时间,所述令牌中还可以包括系统标识,所述消息体包括消息生产者所要发送的具体数据内容;
步骤202,提取所述待发送消息中令牌的分区标识,并判断所述分区标识是否为有序消息标识,例如判断所述分区标识的值是否为1,为1则表示所述待发送消息为有序消息,则执行步骤203,例如若是为3则表示所述待发送消息为无序消息,则执行步骤204;
步骤203,将所述待发送消息的令牌作为其类别,并将所述分区标识标记的分区作为发送分区,即所述待发送消息中包括的应用程序名称、路由密钥以及生产时间均可去除,仅将令牌和消息体作为所述待发送消息发送出去;
步骤204,根据所述应用程序名称、路由密钥以及所述分区标识,得到所述待发送消息的指定分区,并将所述待发送消息的令牌作为其类别,将所述指定分区作为发送分区。
其中,根据Index=Hash(appName+routeKey)mod P,得到所述待发送消息的指定分区Index,其中,appName为所述应用程序名称,routeKey为所述路由密钥,P为所述分区标识。利用上述方式,将无序消息打散后随机分配到指定分区进行发送,避免待发送消息分配分区不均匀的现象。
步骤205,通过发送分区发送所述待发送消息;
步骤206,检测所述待发送消息是否发送成功,若成功,则结束本次消息处理,若没有成功,则执行步骤207,其中,对于没有发送成功的待发送消息会被标记有重发标识以及重试次数;
步骤207,判断发送失败的消息中标记的重试次数是否达到重试阈值,其中,所述重试阈值可以为3或5,可依据系统需要而定,本发明实施例中不做限定。若超过重试阈值,则执行步骤208,若没有超过重试阈值,则将所述重试次数加1,并返回步骤205,重新通过对应发送分区发送所述发送失败的消息;
步骤208,将所述待发送消息存入缓存,并间隔预设时间将所述缓存中的待发送消息存入消息中心,以便所述消息中心根据所述待发送消息对应的处理指令,重新处理。
通过上述消息生产侧增加一个消息的按次重试机制,且重试次数可配置,如果超过重试阈值则将消息放入缓存中,并间隔预设时间将缓存中的消息持久化到消息中心中,以便生产侧的用户对发送失败的消息做进一步处理。另外,上述对生产侧的发送失败消息的处理支持有序消息和无序消息两种方式。
图3是本发明实施例提供的一种消息处理方法的流程示意图。如图3所示,所述方法应用于分布式系统消息的消费侧,包括如下步骤:
步骤301,获取所述待消费消息,所述待消费消息中包括消息生产者的令牌以及消息体,其中,所获取的待消费消息除了包括正常的待消费消息,可能还包括消费失败的重试的待消费消息,所述消息体包括消息生产者所要发送的具体数据内容;
步骤302,判断所述待消费消息中是否存在重试标识,若存在则执行步骤303,若不存在则执行步骤304;
步骤303,根据所述待消费消息的业务逻辑,判断所述待消费消息是否已经被消费过,若是消费过,则结束对所述待消费消息的处理,若未被消费过,则执行步骤304。
其中,由于有些消息可能已经被消费了,但是超过一定时间没有通知系统该消息被消费过了,系统会认为该消息消费失败,但是该消息是已经被消费过的,因此,对于存在重试标识的待消费消息需要判断是否被消费过,以避免被重复消费。
另外,上述待消费消息的业务逻辑可以根据业务方自己的业务逻辑进行判断。
步骤304,根据令牌与指定消费方法的映射关系,查找到所述待消费消息中的令牌对应的指定消费方法,并利用所述指定消费方法对所述待消费消息进行处理。
其中,在消费侧需要事先配置令牌与指定消费方法的映射关系,即将令牌与指定消费方法之间相关联,从而在获取到待消费消息时,可通过该映射关系,由消息中的令牌找到对应的指定消费方法,并利用所述指定消费方法对所述待消费消息进行处理。
步骤305,检测所述待消费消息是否消费成功,若成功,则结束本次消息处理,若没有成功,则执行步骤306,其中,对于没有消费成功的待消费消息会被标记有重试标识、重试次数、本次消费失败的消费者、重试类型以及重试类型为延迟重试的设定延迟时间;
步骤306,判断消费失败的消息中标记的重试次数是否达到重试阈值,其中,所述重试阈值可以为3或5,可依据系统需要而定,本发明实施例中不做限定。若超过重试阈值,则执行步骤307,若没有超过重试阈值,则执行步骤308;
步骤307,将所述待消费消息存入缓存,并间隔预设时间将所述缓存中的待消费消息存入消息中心,以便所述消息中心根据所述待消费消息对应的处理指令,重新处理;
步骤308,判断所述重试类型是否为按次重试,若是则将所述重试次数加1,重新消费该消息并返回步骤301,否则为延迟重试,则执行步骤309;
步骤309,将所述待消费消息放入延迟队列中,根据设定延迟时间,重新处理所述待消费消息并返回步骤301。
通过上述消息消费侧增加了消息的按次重试和延迟重试两种可配置的重试类型,且重试次数可配置,延迟时间可配置。如果重试次数超过重试阈值则将消息放入缓存中,并间隔预设时间将缓存中的消息持久化到消息中心中,以便生产侧的用户对发送失败的消息做进一步处理。另外,通过重试标识决定待消费消息属于正常消费的消息还是重试消息,并通过预先配置的令牌与指定消费方法的映射关系,由令牌获取到消息的指定消费方法。
在本发明实施例中,对于消息中心中的消息,其中包括了待发送消息和待消费消息,对应的用户可以通过权限查看到自己权限下处理异常的待发送消息和待消费消息的详细信息,并根据对应的处理指令重新处理。对于处理指令包括再次重试,例如,配置任务定时重试,还包括放弃处理,例如,放弃发送,放弃消费。
通过本发明实施例,弥补了分布式系统的一些缺陷,减少了分布式系统使用方开发的难度,通过增加自动重试机制,减少了用户处理失败消息的工作量,另外增加了消息中心,便于用户对于失败消息的管理和分析,保证消息的最终一致性。
相应的,图4是本发明实施例提供的一种消息处理装置的结构示意图。如图4所示,所述装置40包括:检测单元41,用于检测分布式系统消息是否处理失败;第一判断单元42,用于当检测到所述分布式系统消息处理失败时,判断所述分布式系统消息中标记的重试次数是否达到重试阈值;第一处理单元43,用于当所述重试次数没有达到所述重试阈值时,重新处理所述分布式系统消息,并更新所述重试次数;第二处理单元44,用于当所述重试次数达到所述重试阈值时,将所述分布式系统消息存入缓存,并间隔预设时间将所述缓存中的分布式系统消息存入消息中心,以便所述消息中心根据所述分布式系统消息对应的处理指令,重新处理。
通过本发明实施例,利用重试机制对上述处理失败的分布式系统消息重新进行处理,并将重试次数达到重试阈值之后的分布式系统消息存入缓存,然后间隔预设时间将缓存中的分布式系统消息存入消息中心,以便所述消息中心根据所述分布式系统消息对应的处理指令,重新处理。本发明实施例解决了现有技术中在补偿发送或消费失败的分布式系统消息时,极易出现消息丢失的问题,实现了发送消息与消费消息的一致性。
进一步地,当所述分布式系统消息为待发送消息时,如图5所示,所述装置还包括:第一获取单元51,用于获取所述待发送消息,所述待发送消息中包括消息生产者的令牌、应用程序名称、路由密钥以及消息体,所述令牌中包括分区标识;提取单元52,用于提取所述待发送消息中令牌的分区标识;第二判断单元53,用于判断所述分区标识是否为有序消息标识;发送单元54,用于当所述分区标识为有序消息标识时,将所述待发送消息的令牌作为其类别通过所述分区标识标记的分区进行发送;当所述分区标识不为有序消息标识时,根据所述应用程序名称、路由密钥以及所述分区标识,得到所述待发送消息的指定分区,并将所述待发送消息的令牌作为其类别通过所述指定分区进行发送。
进一步地,所述发送单元还用于根据Index=Hash(appName+routeKey)mod P,得到所述待发送消息的指定分区Index,其中,appName为所述应用程序名称,routeKey为所述路由密钥,P为所述分区标识。
进一步地,当所述分布式系统消息为待消费消息时,如图6所示,所述装置还包括:第二获取单元61,用于获取所述待消费消息,所述待消费消息中包括消息生产者的令牌以及消息体;第三判断单元62,用于判断所述待消费消息中是否存在重试标识;第四判断单元63,用于当所述待消费消息中存在所述重试标识时,根据所述待消费消息的业务逻辑,判断所述待消费消息是否已经被消费过;第三处理单元64,用于当所述待消费消息已经被消费过,结束对所述待消费消息的处理;消费单元65,用于当所述待消费消息未被消费过,或所述待消费消息中不存在所述重试标识时,根据令牌与指定消费方法的映射关系,查找到所述待消费消息中的令牌对应的指定消费方法,并利用所述指定消费方法对所述待消费消息进行处理。
进一步地,当所述分布式系统消息为待消费消息时,所述第一处理单元还用于当所述重试次数没有达到所述重试阈值时,根据预设重试类型重新处理所述待消费消息,所述预设重试类型包括按次重试与延迟重试。
进一步地,当所述预设重试类型为所述延迟重试时,所述第一处理单元还用于将所述待消费消息放入延迟队列中,根据设定延迟时间,重新处理所述待消费消息。
本装置的操作过程,参见上述消息处理方法的实现过程。
相应的,图7是本发明实施例提供的一种设备的结构示意图,如图7所示,所述设备70包括至少一个处理器71、以及与所述处理器连接的至少一个存储器72、总线73;其中,所述处理器与所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如上述实施例所述的消息处理方法。
相应的,本发明实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上述实施例所述的消息处理方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种消息处理方法,其特征在于,包括:
检测分布式系统消息是否处理失败;
当检测到所述分布式系统消息处理失败时,判断所述分布式系统消息中标记的重试次数是否达到重试阈值;
当所述重试次数没有达到所述重试阈值时,重新处理所述分布式系统消息,并更新所述重试次数;
当所述重试次数达到所述重试阈值时,将所述分布式系统消息存入缓存,并间隔预设时间将所述缓存中的分布式系统消息存入消息中心,以便所述消息中心根据所述分布式系统消息对应的处理指令,重新处理。
2.根据权利要求1所述的消息处理方法,其特征在于,当所述分布式系统消息为待发送消息时,在所述检测分布式系统消息是否处理失败的步骤之前,所述方法还包括:
获取所述待发送消息,所述待发送消息中包括消息生产者的令牌、应用程序名称、路由密钥以及消息体,所述令牌中包括分区标识;
提取所述待发送消息中令牌的分区标识,并判断所述分区标识是否为有序消息标识;
当所述分区标识为有序消息标识时,将所述待发送消息的令牌作为其类别通过所述分区标识标记的分区进行发送;
当所述分区标识不为有序消息标识时,根据所述应用程序名称、路由密钥以及所述分区标识,得到所述待发送消息的指定分区,并将所述待发送消息的令牌作为其类别通过所述指定分区进行发送。
3.根据权利要求2所述的消息处理方法,其特征在于,所述根据所述应用程序名称、路由密钥以及所述分区标识,得到所述待发送消息的指定分区的步骤,包括:
根据Index=Hash(appName+routeKey)mod P,得到所述待发送消息的指定分区Index,其中,appName为所述应用程序名称,routeKey为所述路由密钥,P为所述分区标识。
4.根据权利要求1所述的消息处理方法,其特征在于,当所述分布式系统消息为待消费消息时,在所述检测分布式系统消息是否处理失败的步骤之前,所述方法还包括:
获取所述待消费消息,所述待消费消息中包括消息生产者的令牌以及消息体;
判断所述待消费消息中是否存在重试标识;
当所述待消费消息中存在所述重试标识时,根据所述待消费消息的业务逻辑,判断所述待消费消息是否已经被消费过;
当所述待消费消息已经被消费过,结束对所述待消费消息的处理;
当所述待消费消息未被消费过,或所述待消费消息中不存在所述重试标识时,根据令牌与指定消费方法的映射关系,查找到所述待消费消息中的令牌对应的指定消费方法,并利用所述指定消费方法对所述待消费消息进行处理。
5.根据权利要求1所述的消息处理方法,其特征在于,当所述分布式系统消息为待消费消息时,所述当所述重试次数没有达到所述重试阈值时,重新处理所述分布式系统消息的步骤,包括:
当所述重试次数没有达到所述重试阈值时,根据预设重试类型重新处理所述待消费消息,所述预设重试类型包括按次重试与延迟重试。
6.根据权利要求5所述的消息处理方法,其特征在于,当所述预设重试类型为所述延迟重试时,所述根据预设重试类型重新处理所述待消费消息的步骤,包括:
将所述待消费消息放入延迟队列中,根据设定延迟时间,重新处理所述待消费消息。
7.一种消息处理装置,其特征在于,包括:
检测单元,用于检测分布式系统消息是否处理失败;
第一判断单元,用于当检测到所述分布式系统消息处理失败时,判断所述分布式系统消息中标记的重试次数是否达到重试阈值;
第一处理单元,用于当所述重试次数没有达到所述重试阈值时,重新处理所述分布式系统消息,并更新所述重试次数;
第二处理单元,用于当所述重试次数达到所述重试阈值时,将所述分布式系统消息存入缓存,并间隔预设时间将所述缓存中的分布式系统消息存入消息中心,以便所述消息中心根据所述分布式系统消息对应的处理指令,重新处理。
8.根据权利要求7所述的消息处理装置,其特征在于,当所述分布式系统消息为待发送消息时,所述装置还包括:
第一获取单元,用于获取所述待发送消息,所述待发送消息中包括消息生产者的令牌、应用程序名称、路由密钥以及消息体,所述令牌中包括分区标识;
提取单元,用于提取所述待发送消息中令牌的分区标识;
第二判断单元,用于判断所述分区标识是否为有序消息标识;
发送单元,用于当所述分区标识为有序消息标识时,将所述待发送消息的令牌作为其类别通过所述分区标识标记的分区进行发送;当所述分区标识不为有序消息标识时,根据所述应用程序名称、路由密钥以及所述分区标识,得到所述待发送消息的指定分区,并将所述待发送消息的令牌作为其类别通过所述指定分区进行发送。
9.一种设备,其特征在于,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器与所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1-6任一项所述的消息处理方法。
10.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1-6任一项所述的消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911270196.5A CN110995851B (zh) | 2019-12-11 | 2019-12-11 | 消息处理方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911270196.5A CN110995851B (zh) | 2019-12-11 | 2019-12-11 | 消息处理方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110995851A true CN110995851A (zh) | 2020-04-10 |
CN110995851B CN110995851B (zh) | 2021-12-24 |
Family
ID=70092573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911270196.5A Active CN110995851B (zh) | 2019-12-11 | 2019-12-11 | 消息处理方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110995851B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035164A (zh) * | 2020-09-03 | 2020-12-04 | 中国银行股份有限公司 | 分布式系统更新节点配置的方法、应用节点及控制节点 |
CN113064741A (zh) * | 2021-04-07 | 2021-07-02 | 上海万物新生环保科技集团有限公司 | 一种消息队列重试方法及设备 |
CN113392119A (zh) * | 2021-06-30 | 2021-09-14 | 上海万物新生环保科技集团有限公司 | 一种数据一致性处理方法及设备 |
CN114461407A (zh) * | 2022-04-13 | 2022-05-10 | 杭州涂鸦信息技术有限公司 | 数据处理方法、装置、分发服务器、系统及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130145222A1 (en) * | 2010-10-06 | 2013-06-06 | David W. Birdsall | Method and system for processing events |
CN106713470A (zh) * | 2016-12-29 | 2017-05-24 | 北京奇艺世纪科技有限公司 | 一种分布式缓存更新方法及缓存更新系统 |
CN107239485A (zh) * | 2017-04-18 | 2017-10-10 | 北京小度信息科技有限公司 | 数据库操作方法、装置及系统 |
CN108833443A (zh) * | 2018-07-26 | 2018-11-16 | 长城计算机软件与系统有限公司 | 一种消息传输方法及系统、计算机设备 |
US20180375783A1 (en) * | 2017-06-27 | 2018-12-27 | Atlassian Pty Ltd | Retry handling in messaging queues |
CN109451032A (zh) * | 2018-11-20 | 2019-03-08 | 上海联寓智能科技有限公司 | 一种消息传递系统 |
-
2019
- 2019-12-11 CN CN201911270196.5A patent/CN110995851B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130145222A1 (en) * | 2010-10-06 | 2013-06-06 | David W. Birdsall | Method and system for processing events |
CN106713470A (zh) * | 2016-12-29 | 2017-05-24 | 北京奇艺世纪科技有限公司 | 一种分布式缓存更新方法及缓存更新系统 |
CN107239485A (zh) * | 2017-04-18 | 2017-10-10 | 北京小度信息科技有限公司 | 数据库操作方法、装置及系统 |
US20180375783A1 (en) * | 2017-06-27 | 2018-12-27 | Atlassian Pty Ltd | Retry handling in messaging queues |
CN108833443A (zh) * | 2018-07-26 | 2018-11-16 | 长城计算机软件与系统有限公司 | 一种消息传输方法及系统、计算机设备 |
CN109451032A (zh) * | 2018-11-20 | 2019-03-08 | 上海联寓智能科技有限公司 | 一种消息传递系统 |
Non-Patent Citations (1)
Title |
---|
HUAWEI等: "R2-1818084 "PDCP duplication for improving robustness"" * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035164A (zh) * | 2020-09-03 | 2020-12-04 | 中国银行股份有限公司 | 分布式系统更新节点配置的方法、应用节点及控制节点 |
CN113064741A (zh) * | 2021-04-07 | 2021-07-02 | 上海万物新生环保科技集团有限公司 | 一种消息队列重试方法及设备 |
CN113064741B (zh) * | 2021-04-07 | 2022-04-12 | 上海万物新生环保科技集团有限公司 | 一种消息队列重试方法及设备 |
CN113392119A (zh) * | 2021-06-30 | 2021-09-14 | 上海万物新生环保科技集团有限公司 | 一种数据一致性处理方法及设备 |
CN114461407A (zh) * | 2022-04-13 | 2022-05-10 | 杭州涂鸦信息技术有限公司 | 数据处理方法、装置、分发服务器、系统及存储介质 |
CN114461407B (zh) * | 2022-04-13 | 2022-08-26 | 杭州涂鸦信息技术有限公司 | 数据处理方法、装置、分发服务器、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110995851B (zh) | 2021-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110995851B (zh) | 消息处理方法、装置、存储介质及设备 | |
CN112650576B (zh) | 资源调度方法、装置、设备、存储介质及计算机程序产品 | |
CN103559245A (zh) | 一种分布式事务提交故障的处理方法、装置和系统 | |
US9514176B2 (en) | Database update notification method | |
CN115004673A (zh) | 消息推送方法、装置、电子设备及计算机可读介质 | |
CN106020984B (zh) | 电子设备中进程的创建方法及装置 | |
CN110275793B (zh) | 一种用于MongoDB数据分片集群的检测方法及设备 | |
CN113868058A (zh) | 一种外设组件高速互联设备故障检测方法、装置及服务器 | |
CN111367934B (zh) | 数据一致性的检验方法、装置、服务器和介质 | |
CN110674153B (zh) | 一种数据一致性检测方法、装置及电子设备 | |
CN116540938A (zh) | 数据读取方法、装置、分布式存储系统、设备和存储介质 | |
CN108632321A (zh) | 基于大数据平台下资源调度的处理方法和装置 | |
CN115580522A (zh) | 一种容器云平台运行状态的监控方法及装置 | |
CN113886473A (zh) | 一种提供业务数据的方法及装置 | |
CN110113187B (zh) | 一种配置更新方法、装置、配置服务器及配置系统 | |
CN114328080A (zh) | 一种固件状态检测的方法及装置、电子设备 | |
CN109995855B (zh) | 一种数据获取方法、装置及终端 | |
CN109460284B (zh) | 一种对于虚拟机执行改变的方法和系统 | |
CN112905361A (zh) | 主任务异常处理方法、装置、电子设备和存储介质 | |
CN108880994B (zh) | 一种重发邮件的方法和装置 | |
US10885014B2 (en) | Assigning monitoring responsibilities in distributed systems using optimistic concurrency | |
CN112231290A (zh) | 一种本地日志的处理方法、装置、设备及存储介质 | |
CN111367723A (zh) | 一种基于反射机制的自动重试装置及方法 | |
US20180349215A1 (en) | Transmission of large messages in computer systems | |
US11941432B2 (en) | Processing system, processing method, higher-level system, lower-level system, higher-level program, and lower-level program |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200508 Address after: 100085 Floor 102-1, Building No. 35, West Second Banner Road, Haidian District, Beijing Applicant after: Seashell Housing (Beijing) Technology Co.,Ltd. Address before: 300280 unit 05, room 112, floor 1, building C, comprehensive service area, Nangang Industrial Zone, Binhai New Area, Tianjin Applicant before: BEIKE TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |