CN112559217A - 一种消息可靠性消费幂等处理方法及处理装置 - Google Patents
一种消息可靠性消费幂等处理方法及处理装置 Download PDFInfo
- Publication number
- CN112559217A CN112559217A CN202011529696.9A CN202011529696A CN112559217A CN 112559217 A CN112559217 A CN 112559217A CN 202011529696 A CN202011529696 A CN 202011529696A CN 112559217 A CN112559217 A CN 112559217A
- Authority
- CN
- China
- Prior art keywords
- message
- consumption
- consumption state
- updating
- consumed
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Abstract
本发明的实施例公开一种消息可靠性消费幂等处理方法及处理装置,涉及消息处理技术领域,能够使消息订阅者及时的获知消息的消费状态。所述方法包括:获取消息发送端发送的消息,所述消息包括消息实体以及所述消息的身份标识;将所述消息保存至消息数据库中,并将所述消息对应的消费状态设置为待消费;将所述消息以及所述消息的消费状态发送给消息接收端。本发明实施例适用于对分布式消息进行处理。
Description
技术领域
本发明涉及消息处理技术领域,尤其涉及一种消息可靠性消费幂等处理方法及处理装置。
背景技术
在分布式消息中间件领域存在这种场景,同一条消息有且只允许由一个订阅者进行消费时,由于分布式消息中间件集群节点故障或者其他不可抗因素,导致同一条消息推送给多个消息订阅者,且不同订阅者消费在消息时是相互独立互无感知的,故无法判断该条消息是否已经被其他订阅者消费过或者正在消费,导致同一条消息被多此消费,从而产生无法预估的损失。
发明内容
有鉴于此,本发明实施例提供一种消息可靠性消费幂等处理方法及处理装置,能够使消息订阅者及时的获知消息的消费状态。
第一方面,本发明实施例提供一种消息可靠性消费幂等处理方法,应用于服务端,所述方法包括:获取消息发送端发送的消息,所述消息包括消息实体以及所述消息的身份标识;将所述消息保存至消息数据库中,并将所述消息对应的消费状态设置为待消费;将所述消息以及所述消息的消费状态发送给消息接收端。
可选的,在将所述消息以及所述消息的消费状态发送给消息接收端之后,所述方法还包括:获取所述消息接收端发送的更新所述消息的消费状态的请求;根据更新所述消息的消费状态的请求,对所述消息对应的消费状态进行更新。
可选的,所述根据更新所述消息的消费状态的请求,对所述消息对应的消费状态进行更新;包括:根据将所述消息的消费状态更新为正在消费的请求,将所述消息对应的消费状态进行更新为正在消费;或根据将所述消息的消费状态更新为消费成功的请求,将所述消息对应的消费状态进行更新为消费成功;或根据将所述消息的消费状态更新为消费失败的请求,将所述消息对应的消费状态进行更新为消费失败。
第二方面,本发明实施例提供一种消息可靠性消费幂等处理方法,应用于消息接收端,所述方法包括:获取服务端发送的消息以及所述消息的消费状态,所述消息的消费状态包括待消费、正在消费、消费成功和消费失败;根据所述消息的消费状态,对所述消息进行处理。
可选的,所述根据所述消息的消费状态,对所述消息进行处理,包括:当所述消息的消费状态为待消费时,请求服务端将所述消息的消费状态更新为正在消费;执行对所述消息的消费业务逻辑;判断所述消息是否消费成功;若是,请求服务端将所述消息的消费状态更新为消费成功。
可选的,在判断所述消息消费失败时,所述方法还包括:请求服务端将所述消息的消费状态更新为消费失败。
可选的,所述根据所述消息的消费状态,对所述消息进行处理;包括:当所述消息的消费状态为正在消费时,则根据所述消息的消费状态更新为正在消费时的时间与当前时间的时间差,判断是否对所述消息进行重新消费;当所述消息的消费状态为消费成功时,则停止对所述消息进行消费;当所述消息的消费状态为消费失败时,则重新对所述消息进行消费。
第三方面,本发明实施例提供一种消息可靠性消费幂等处理装置,所述装置包括:第一获取单元,用于获取消息发送端发送的消息,所述消息包括消息实体以及所述消息的身份标识;第一处理单元,用于将所述消息保存至消息数据库中,并将所述消息对应的消费状态设置为待消费;发送单元,用于将所述消息以及所述消息的消费状态发送给消息接收端。
可选的,所述装置还包括:第二获取单元,用于获取所述消息接收端发送的更新所述消息的消费状态的请求;更新单元,用于根据更新所述消息的消费状态的请求,对所述消息对应的消费状态进行更新。
可选的,所述更新单元具体用于:根据将所述消息的消费状态更新为正在消费的请求,将所述消息对应的消费状态进行更新为正在消费;或根据将所述消息的消费状态更新为消费成功的请求,将所述消息对应的消费状态进行更新为消费成功;或根据将所述消息的消费状态更新为消费失败的请求,将所述消息对应的消费状态进行更新为消费失败。
第四方面,本发明实施例提供一种消息可靠性消费幂等处理装置,所述装置包括:第三获取单元,用于获取服务端发送的消息以及所述消息的消费状态,所述消息的消费状态包括待消费、正在消费、消费成功和消费失败;第二处理单元,用于根据所述消息的消费状态,对所述消息进行处理。
可选的,所述第二处理单元具体用于:当所述消息的消费状态为待消费时,请求服务端将所述消息的消费状态更新为正在消费;执行对所述消息的消费业务逻辑;判断所述消息是否消费成功;若是,请求服务端将所述消息的消费状态更新为消费成功。
可选的,所述第二处理单元还用于在判断所述消息消费失败时,请求服务端将所述消息的消费状态更新为消费失败。
可选的,所述第二处理单元还用于:当所述消息的消费状态为正在消费时,则根据所述消息的消费状态更新为正在消费时的时间与当前时间的时间差,判断是否对所述消息进行重新消费;当所述消息的消费状态为消费成功时,则停止对所述消息进行消费;当所述消息的消费状态为消费失败时,则重新对所述消息进行消费。
第五方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述实施例任一所述的消息可靠性消费幂等处理方法。
第六方面,本发明实施例还提供了一种存储介质,用于存储应用程序,所述应用程序用于执行前述实施例任一所述的消息可靠性消费幂等处理方法。
第七方面,本发明实施例还提供了一种应用程序,用于执行前述实施例任一所述的消息可靠性消费幂等处理方法。
本发明实施例提供的一种消息可靠性消费幂等处理方法方法及处理装置,通过获取消息发送端发送的消息,所述消息包括消息实体以及所述消息的身份标识;将所述消息保存至消息数据库中,并将所述消息对应的消费状态设置为待消费;将所述消息以及所述消息的消费状态发送给消息接收端。这样,消息接收端在接收到消息时就能够获知所述消息的消费状态。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的实施例一提供的其中一种消息可靠性消费幂等处理方法的流程示意图;
图2为本发明的实施例一提供的另一种消息可靠性消费幂等处理方法流程示意图;
图3为本发明的实施例二提供的其中一种消息可靠性消费幂等处理方法的流程示意图;
图4本发明提供的一种消息可靠性消费幂等处理方法的具体实施例的流程示意图;
图5为图4中的生产者和MQ数据库部分的放大示意图;
图6为图4中的消费者部分的放大示意图;
图7为图4中的幂等模块部分的放大示意图;
图8为本发明的实施例三提供的其中一种消息可靠性消费幂等处理装置的结构示意图;
图9为本发明的实施例三提供的另一种消息可靠性消费幂等处理装置的结构示意图;
图10为本发明的实施例四提供的一种消息可靠性消费幂等处理装置的结构示意图;
图11为本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一
如图1所示,本发明实施例提供一种消息可靠性消费幂等处理方法,应用于服务端,所述方法包括:
S101、获取消息发送端发送的消息,所述消息包括消息实体以及所述消息的身份标识;
本步骤,所述消息的身份标识(id)用于唯一标识此消息,所述消息实体为所述消息的具体内容,例如实际的交易信息等;所述消息发送端在生产消息时可以将所述消息的格式设置为Json格式。
S102、将所述消息保存至消息数据库中,并将所述消息对应的消费状态设置为待消费;
本步骤,所述消息数据库中的每条消息均对应有一个消费状态(status),用于标识该消息的消费状态;在将所述消息保存至所述消息数据库中之后,由于所述消息尚未被消费,因此,将所述消息对应的消费状态设置为待消费。
所述服务端也可以称为消息幂等模块,所述消息数据库可以为MongoDB数据库。
S103、将所述消息以及所述消息的消费状态发送给消息接收端。
本步骤,所述消息接收端也可以称为消息订阅者,所述服务端在将所述消息保存在消息数据库以及为所述消息设置相应的消费状态之后,再将所述消息以及所述消息的消费状态发送给消息订阅者,以供所述消息订阅者根据所述消息的消费状态对所述消息进行相应处理。
本发明实施例提供的一种消息可靠性消费幂等处理方法,通过获取消息发送端发送的消息,所述消息包括消息实体以及所述消息的身份标识;将所述消息保存至消息数据库中,并将所述消息对应的消费状态设置为待消费;将所述消息以及所述消息的消费状态发送给消息接收端。这样,消息接收端在接收到消息时就能够获知所述消息的消费状态。
如图2所示,可选的,在将所述消息以及所述消息的消费状态发送给消息接收端之后,所述方法还包括:
S104、获取所述消息接收端发送的更新所述消息的消费状态的请求;
本步骤,由于所述消息接收端在了解了所述消息的消费状态之后,可能会对所述消息进行相应的处理,这时,所述消息接收端会发送相应的更新所述消息的消费状态的请求。
例如:当所述消息接收端接收到的消息的消费状态为待消费时,则说明此消息是首次被消费,这时,消息接收端进行相关消息消费业务逻辑,并同步请求服务端将所述消息的消费状态更新为正在消费;
待所述消息消费成功后,所述消息接收端请求服务端将所述消息的消费状态更新为消费成功;若所述消息消费失败,则所述消息接收端请求服务端将所述消息的消费状态更新为消费失败。
S105、根据更新所述消息的消费状态的请求,对所述消息对应的消费状态进行更新。
本步骤,所述根据更新所述消息的消费状态的请求,对所述消息对应的消费状态进行更新;可以包括:根据将所述消息的消费状态更新为正在消费的请求,将所述消息对应的消费状态进行更新为正在消费;或根据将所述消息的消费状态更新为消费成功的请求,将所述消息对应的消费状态进行更新为消费成功;或根据将所述消息的消费状态更新为消费失败的请求,将所述消息对应的消费状态进行更新为消费失败。
本实施例,由于所述消息数据库中每条消息的消费状态是根据消费情况实时更新的,且消息接收端能够在接收消息的同时获取该条消息当前的消费状态,因此,在由于分布式消息中间件集群节点故障或者其他不可抗因素导致同一条消息推送给多个消息订阅者时,若消息订阅者接收到的消息的消费状态不是待消费,则说明有其他消息订阅者正在消费或者已经消费了该条消息,则该消息订阅者可以不再进行该条消息的消费处理逻辑,以避免同一条消息被多次消费。
实施例二
如图3所示,本发明实施例提供一种消息可靠性消费幂等处理方法,应用于消息接收端,所述方法包括:
S201、获取服务端发送的消息以及所述消息的消费状态,所述消息的消费状态包括待消费、正在消费、消费成功和消费失败;
本步骤,当所述消息的消费状态为待消费时,说明所述消息是首次消费;当所述消息的消费状态为正在消费时,则说明该消息正在被其他消息订阅者消费;当所述消息的消费状态为消费成功时,则说明该消息已经被其他消息订阅者消费过且消费成功;当所述消息的消费状态为消费失败时,则说明该消息已经被其他消息订阅者消费过但消费失败。
S202、根据所述消息的消费状态,对所述消息进行处理。
本步骤,所述根据所述消息的消费状态,对所述消息进行处理,包括:当所述消息的消费状态为待消费时,请求服务端将所述消息的消费状态更新为正在消费;执行对所述消息的消费业务逻辑;判断所述消息是否消费成功;若是,请求服务端将所述消息的消费状态更新为消费成功。
这样,在所述消息的消费状态为待消费时,说明该消息是首次被消费,消息接收端可以执行对所述消息的消息消费业务逻辑,而无需担心对所述消息造成重复消费。且在执行对所述消息的消费业务逻辑的同时,请求服务端将所述消息的消费状态更新为正在消费,这样,在所述服务端将该消息发送给其他消息订阅者时,其他消息订阅者就能够获知该条消息正在被消费,并据此执行相应的消息处理逻辑,以避免所述消息被重复消费。
当所述消息消费成功之后,所述消息接收端还请求服务端将所述消息的消费状态更新为消费成功,这样,当其他消息订阅者在消息消费成功之后再拿到该条消息时,就能够获知该条消息已经被消费过且消费成功,并据此不再对该条消息进行重复消费。
可选的,在上述实施例中,在判断所述消息消费失败时,所述方法还包括:请求服务端将所述消息的消费状态更新为消费失败。
本实施例,由于所述消息接收方对所述消息消费失败,因此,该条消息实际上相当于未被消费,这时,请求服务端将所述消息的消费状态更新为消费失败,这样,在其他消息订阅者收到该条消息时,可以获知该消息被消费过但未消费成功,从而对该条消息执行重新消费的操作。
可选的,在上述任一实施例中,所述根据所述消息的消费状态,对所述消息进行处理;包括:当所述消息的消费状态为正在消费时,则根据所述消息的消费状态更新为正在消费时的时间与当前时间的时间差,判断是否对所述消息进行重新消费;当所述消息的消费状态为消费成功时,则停止对所述消息进行消费;当所述消息的消费状态为消费失败时,则重新对所述消息进行消费。
本实施例,当所述消息的消费状态为正在消费时,可以通过判断所述时间差是否大于预设阈值来确定是否重新对所述消息进行消费,所述预设阈值可以设置成大于一般消息的消费时长的值,这时,当所述时间差大于所述预设阈值时,则正在消费所述消息的消息接收端可能在消费消息时出错或出现其他错误,这时,可以重新对所述消息进行消费。
为更好地理解本发明,下面通过一具体实施例对本发明提供的消息可靠性消费幂等处理方法进行说明。
如图4、图5、图6以及图7所示,本发明实施例一和实施例二中的消息发送端(生产者)、服务端(幂等模块)、数据库(MQ)以及消息接收端(消费者)之间的工作流程如下:
第一步:生产者产生消息,并在消息中附加“业务唯一ID”;
第二步:MQ数据库对应存储所述消息以及所述ID;
第三步:消费者接收到该消息,该消息中具有所述ID;
第四步:幂等模块从消息中获取到消息的“业务唯一ID”,并判断“业务唯一ID”在MongoDB中存在吗?
若存在,则从MongoDB中取出消息返回给调用方(消费者);
若不存在,则将该消息的状态设置成“初始状态”,并连同消息体返回给调用方;并将该消息状态设置成“正在消费”状态、加上当前时间作为本消息的消费时间,最后存储到MongoDB中。
第五步:消费者接收幂等模块返回的消息;
判断该消息的消费状态;
若为初始状态,则表示没有消费过该消息,可以正常消费;
若为正在消费,则表示消息之前消费过,根据上次消费的时间与当前的时间差,自行决定是否重新消费;
若为消费成功状态,则表示之前已经成功消费了此消息,不再对此消息进行消费;
若为消费失败状态,则表示之前消费了此消息,但失败了;可以重新消费此消息;
第六步:消费者在消费该消息之后,判断消费是否成功;
若成功,则通知幂等模块将消息更新成“消费成功”状态;
若失败,则通知幂等模块将消息更新成“消费失败”状态;
结束。
实施例三
如图8所示,本发明实施例提供一种消息可靠性消费幂等处理装置,所述装置包括:第一获取单元31,用于获取消息发送端发送的消息,所述消息包括消息实体以及所述消息的身份标识;第一处理单元32,用于将所述消息保存至消息数据库中,并将所述消息对应的消费状态设置为待消费;发送单元33,用于将所述消息以及所述消息的消费状态发送给消息接收端。
如图9所示,可选的,所述装置还包括:第二获取单元34,用于获取所述消息接收端发送的更新所述消息的消费状态的请求;更新单元35,用于根据更新所述消息的消费状态的请求,对所述消息对应的消费状态进行更新。
可选的,所述更新单元具体用于:根据将所述消息的消费状态更新为正在消费的请求,将所述消息对应的消费状态进行更新为正在消费;或根据将所述消息的消费状态更新为消费成功的请求,将所述消息对应的消费状态进行更新为消费成功;或根据将所述消息的消费状态更新为消费失败的请求,将所述消息对应的消费状态进行更新为消费失败。
本实施例的装置,可以用于执行图1-2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
实施例四
如图10所示,本发明实施例提供一种消息可靠性消费幂等处理装置,所述装置包括:第三获取单元41,用于获取服务端发送的消息以及所述消息的消费状态,所述消息的消费状态包括待消费、正在消费、消费成功和消费失败;第二处理单元42,用于根据所述消息的消费状态,对所述消息进行处理。
可选的,所述第二处理单元具体用于:当所述消息的消费状态为待消费时,请求服务端将所述消息的消费状态更新为正在消费;执行对所述消息的消费业务逻辑;判断所述消息是否消费成功;若是,请求服务端将所述消息的消费状态更新为消费成功。
可选的,所述第二处理单元还用于在判断所述消息消费失败时,请求服务端将所述消息的消费状态更新为消费失败。
可选的,所述第二处理单元还用于:当所述消息的消费状态为正在消费时,则根据所述消息的消费状态更新为正在消费时的时间与当前时间的时间差,判断是否对所述消息进行重新消费;当所述消息的消费状态为消费成功时,则停止对所述消息进行消费;当所述消息的消费状态为消费失败时,则重新对所述消息进行消费。
本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。
在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。
图11为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-4所示实施例的流程,如图11所示,上述电子设备可以包括:壳体51、处理器52、存储器53、电路板54和电源电路55,其中,电路板54安置在壳体51围成的空间内部,处理器52和存储器53设置在电路板54上;电源电路55,用于为上述电子设备的各个电路或器件供电;存储器53用于存储可执行程序代码;处理器52通过读取存储器53中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行上述任一实施例所述的消息可靠性消费幂等处理方法。
处理器52对上述步骤的具体执行过程以及处理器52通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-4所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
本发明实施例还提供了一种存储介质,用于存储应用程序,所述应用程序用于执行本发明实施例所提供的消息可靠性消费幂等处理方法。
本发明实施例还提供了一种应用程序,用于执行本发明实施例所提供的消息可靠性消费幂等处理。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本
发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种消息可靠性消费幂等处理方法,其特征在于,应用于服务端,所述方法包括:
获取消息发送端发送的消息,所述消息包括消息实体以及所述消息的身份标识;
将所述消息保存至消息数据库中,并将所述消息对应的消费状态设置为待消费;
将所述消息以及所述消息的消费状态发送给消息接收端。
2.根据权利要求1所述的方法,其特征在于,在将所述消息以及所述消息的消费状态发送给消息接收端之后,所述方法还包括:
获取所述消息接收端发送的更新所述消息的消费状态的请求;
根据更新所述消息的消费状态的请求,对所述消息对应的消费状态进行更新。
3.根据权利要求2所述的方法,其特征在于,所述根据更新所述消息的消费状态的请求,对所述消息对应的消费状态进行更新;包括:
根据将所述消息的消费状态更新为正在消费的请求,将所述消息对应的消费状态进行更新为正在消费;或
根据将所述消息的消费状态更新为消费成功的请求,将所述消息对应的消费状态进行更新为消费成功;或
根据将所述消息的消费状态更新为消费失败的请求,将所述消息对应的消费状态进行更新为消费失败。
4.一种消息可靠性消费幂等处理方法,其特征在于,应用于消息接收端,所述方法包括:
获取服务端发送的消息以及所述消息的消费状态,所述消息的消费状态包括待消费、正在消费、消费成功和消费失败;
根据所述消息的消费状态,对所述消息进行处理。
5.根据权利要求4所述的方法,其特征在于,所述根据所述消息的消费状态,对所述消息进行处理,包括:
当所述消息的消费状态为待消费时,请求服务端将所述消息的消费状态更新为正在消费;
执行对所述消息的消费业务逻辑;
判断所述消息是否消费成功;
若是,请求服务端将所述消息的消费状态更新为消费成功。
6.根据权利要求5所述的方法,其特征在于,在判断所述消息消费失败时,所述方法还包括:
请求服务端将所述消息的消费状态更新为消费失败。
7.根据权利要求4所述的方法,其特征在于,所述根据所述消息的消费状态,对所述消息进行处理;包括:
当所述消息的消费状态为正在消费时,则根据所述消息的消费状态更新为正在消费时的时间与当前时间的时间差,判断是否对所述消息进行重新消费;
当所述消息的消费状态为消费成功时,则停止对所述消息进行消费;
当所述消息的消费状态为消费失败时,则重新对所述消息进行消费。
8.一种消息可靠性消费幂等处理装置,其特征在于,所述装置包括:
第一获取单元,用于获取消息发送端发送的消息,所述消息包括消息实体以及所述消息的身份标识;
第一处理单元,用于将所述消息保存至消息数据库中,并将所述消息对应的消费状态设置为待消费;
发送单元,用于将所述消息以及所述消息的消费状态发送给消息接收端。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二获取单元,用于获取所述消息接收端发送的更新所述消息的消费状态的请求;
更新单元,用于根据更新所述消息的消费状态的请求,对所述消息对应的消费状态进行更新。
10.一种消息可靠性消费幂等处理装置,其特征在于,所述装置包括:
第三获取单元,用于获取服务端发送的消息以及所述消息的消费状态,所述消息的消费状态包括待消费、正在消费、消费成功和消费失败;
第二处理单元,用于根据所述消息的消费状态,对所述消息进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011529696.9A CN112559217A (zh) | 2020-12-22 | 2020-12-22 | 一种消息可靠性消费幂等处理方法及处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011529696.9A CN112559217A (zh) | 2020-12-22 | 2020-12-22 | 一种消息可靠性消费幂等处理方法及处理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112559217A true CN112559217A (zh) | 2021-03-26 |
Family
ID=75030839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011529696.9A Pending CN112559217A (zh) | 2020-12-22 | 2020-12-22 | 一种消息可靠性消费幂等处理方法及处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559217A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342859A (zh) * | 2021-06-29 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、装置及电子设备 |
CN113900842A (zh) * | 2021-12-10 | 2022-01-07 | 飞狐信息技术(天津)有限公司 | 消息的消费方法、装置、电子设备及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004336383A (ja) * | 2003-05-07 | 2004-11-25 | Ntt Docomo Inc | メッセージ蓄積状態管理サーバ、及び、メッセージ蓄積状態管理システム |
CN109271417A (zh) * | 2018-11-23 | 2019-01-25 | 福建榕基软件股份有限公司 | 一种基于数据库的轻量级消息队列实现方法及存储设备 |
CN110489437A (zh) * | 2019-08-21 | 2019-11-22 | 中国工商银行股份有限公司 | 分布式事务处理方法、装置、计算机设备及存储介质 |
CN110941502A (zh) * | 2019-12-16 | 2020-03-31 | 广州市百果园信息技术有限公司 | 消息处理方法、装置、存储介质及设备 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
-
2020
- 2020-12-22 CN CN202011529696.9A patent/CN112559217A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004336383A (ja) * | 2003-05-07 | 2004-11-25 | Ntt Docomo Inc | メッセージ蓄積状態管理サーバ、及び、メッセージ蓄積状態管理システム |
CN109271417A (zh) * | 2018-11-23 | 2019-01-25 | 福建榕基软件股份有限公司 | 一种基于数据库的轻量级消息队列实现方法及存储设备 |
CN110489437A (zh) * | 2019-08-21 | 2019-11-22 | 中国工商银行股份有限公司 | 分布式事务处理方法、装置、计算机设备及存储介质 |
CN110941502A (zh) * | 2019-12-16 | 2020-03-31 | 广州市百果园信息技术有限公司 | 消息处理方法、装置、存储介质及设备 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342859A (zh) * | 2021-06-29 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、装置及电子设备 |
CN113342859B (zh) * | 2021-06-29 | 2023-08-15 | 北京奇艺世纪科技有限公司 | 一种信息处理方法、装置及电子设备 |
CN113900842A (zh) * | 2021-12-10 | 2022-01-07 | 飞狐信息技术(天津)有限公司 | 消息的消费方法、装置、电子设备及计算机存储介质 |
CN113900842B (zh) * | 2021-12-10 | 2022-04-26 | 飞狐信息技术(天津)有限公司 | 消息的消费方法、装置、电子设备及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110048879B (zh) | 微服务注册方法、装置、电子设备和计算机可读存储介质 | |
CN109413186B (zh) | 应用程序更新方法、终端、服务器及系统 | |
CN112559217A (zh) | 一种消息可靠性消费幂等处理方法及处理装置 | |
CN110022260B (zh) | 一种跨环境回执消息处理方法及系统 | |
CN104391716A (zh) | 基于插件的应用程序实现方法及装置 | |
CN105224421B (zh) | 一种数据备份方法、装置及电子设备 | |
CN106843635B (zh) | 信息展示方法、装置和电子设备 | |
CN109002315A (zh) | 应用程序更新方法、装置、终端及存储介质 | |
CN106095587B (zh) | 应用程序的缓存扫描方法、装置及电子设备 | |
CN110221878A (zh) | 一种游戏服务的更新方法、装置、电子设备及存储介质 | |
CN104702647A (zh) | 信息请求方法和系统 | |
CN102377793A (zh) | 基于移动通讯设备终端的Flash交互方法及装置 | |
CN110545309B (zh) | 物联网终端eUICC卡管理方法、装置及系统 | |
CN111338905A (zh) | 应用节点数据处理方法及装置 | |
CN113157756B (zh) | 互动数据统计方法、装置、电子设备及存储介质 | |
CN104735643A (zh) | 一种信息处理的方法及数据服务器 | |
CN106412018B (zh) | 消息推送方法和装置 | |
CN114697339A (zh) | 集中式架构下的负载均衡方法及装置 | |
CN112698791A (zh) | 一种系统磁盘的清理方法、装置、电子设备及存储介质 | |
CN107885618B (zh) | 基于网络游戏的数据监控方法、装置、设备及存储介质 | |
CN114281498A (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
CN115865864A (zh) | 远程网盘访问方法、装置、电子设备及存储介质 | |
CN110007975B (zh) | 声卡自适应加载方法及系统 | |
CN115695555B (zh) | 接口调用方法、系统、处理设备及存储介质 | |
CN113747100B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210326 |