CN114327948A - 消息处理方法、装置、设备及存储介质 - Google Patents
消息处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114327948A CN114327948A CN202111631962.3A CN202111631962A CN114327948A CN 114327948 A CN114327948 A CN 114327948A CN 202111631962 A CN202111631962 A CN 202111631962A CN 114327948 A CN114327948 A CN 114327948A
- Authority
- CN
- China
- Prior art keywords
- message
- client
- queue
- processing method
- message queue
- 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
Landscapes
- Hardware Redundancy (AREA)
Abstract
本申请提供一种消息处理方法、装置、设备及存储介质,涉及计算机技术领域,该消息处理方法应用于服务器,服务器中设置有第一消息队列,该消息处理方法包括:向第一客户端发送第一消息队列中的第一消息;若接收到第一客户端针对第一消息发送的消费失败信息,则缓存第一消息;将缓存中的第一消息,采用尾插的方式存储至第一消息队列。本申请通过将第一消息队列中消费失败的第一消息通过尾插法存储至第一消息队列,能够避免消费失败的第一消息被丢弃而无法正常被消费,进而影响到第一消息所在的流程任务的正常执行。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种消息处理方法、装置、设备及存储介质。
背景技术
消息队列(MQ,Message Queue),是基础数据结构中“先进先出”的一种数据结构。具体为分布式应用间交换信息的一种技术,用于实现系统解耦、提高系统的响应时间等作用。
其中,消息队列对应有生产者和消费者。生产者可以是一个客户端,生产者将其产生的消息发送至服务器,服务器将接收到的消息按照接收的时间先后排序存储至消息队列;消费者可以是另一个客户端,消费者可以从服务器的消息队列中拉取消息进行消费。而由于消息队列遵从先进先出的规则,因此当其中一个消息消费失败时,会堵塞消息队列中后续消息的消费。
为解决上述问题,目前采用对消费失败的消息采用多次消费,若超过预设时间还是消费失败则丢弃该消息,进而导致该丢弃的消息无法正常消费。
发明内容
本申请实施例提供一种消息处理方法、装置、设备及存储介质,用以解决目前丢弃消息队列中消费失败的消息,导致该丢弃的消息无法正常消费的问题。
第一方面,本申请实施例提供一种消息处理方法,应用于服务器,服务器中设置有第一消息队列,消息处理方法包括:向第一客户端发送第一消息队列中的第一消息;若接收到第一客户端针对第一消息发送的消费失败信息,则缓存第一消息;将缓存中的第一消息,采用尾插的方式存储至第一消息队列。
一种可能的实施方式中,向第一客户端发送第一消息队列中的第一消息,包括:获取第一消息的标识信息,其中,第一消息队列中表示同一个任务流程的多个消息具有相同的标识信息;若标识信息与预存的目标标识不同,则将第一消息发送给第一客户端,目标标识是消费失败的第二消息的标识信息。
一种可能的实施方式中,向第一客户端发送第一消息队列中的第一消息,还包括:若标识信息和目标标识相同,则获取第一消息的内容数据;若内容数据与目标标识对应预存的目标内容相同,则将第一消息发送给第一客户端,目标内容是第二消息的内容数据。
一种可能的实施方式中,该消息处理方法还包括:若内容数据与目标内容不同,则缓存第一消息。
一种可能的实施方式中,若内容数据与目标标识对应预存的目标内容相同,则将第一消息发送给第一客户端之后,还包括:若接收到第一客户端针对第一消息发送的消费成功信息,则清除目标标识和目标内容。
一种可能的实施方式中,服务器还包括第二消息队列,缓存第一消息,包括:将第一消息存储至第二消息队列。
一种可能的实施方式中,消息处理方法还包括:若接收到第一客户端针对第一消息发送的消费失败信息,存储第一消息的标识信息和内容数据。
一种可能的实施方式中,将缓存中的第一消息,采用尾插的方式存储至第一消息队列,包括:通过消费者模块从第二消息队列中拉取第一消息;通过消费者模块将第一消息采用尾插的方式存储至第一消息队列,消费者模块具有消费者的功能。
一种可能的实施方式中,缓存第一消息之后,还包括:在第一消息队列中标记第一消息已被消费成功,以使服务器将第三消息发送给对应的第二客户端进行消费,第三消息为第一消息队列中、排序在第一消息后的消息。
第二方面,本申请实施例提供一种消息处理装置,应用于服务器,服务器中设置有第一消息队列,消息处理装置包括:
发送模块,用于向第一客户端发送第一消息队列中的第一消息;
缓存模块,用于若接收到第一客户端针对第一消息发送的消费失败信息,则缓存第一消息;
存储模块,用于将缓存中的第一消息,采用尾插的方式存储至第一消息队列。
一种可能的实施方式中,发送模块具体用于:获取第一消息的标识信息,其中,第一消息队列中表示同一个任务流程的多个消息具有相同的标识信息;若标识信息与预存的目标标识不同,则将第一消息发送给第一客户端,目标标识是消费失败的第二消息的标识信息。
一种可能的实施方式中,发送模块还用于:若标识信息和目标标识相同,则获取第一消息的内容数据;若内容数据与目标标识对应预存的目标内容相同,则将第一消息发送给第一客户端,目标内容是第二消息的内容数据。
一种可能的实施方式中,发送模块还用于:若内容数据与目标内容不同,则缓存第一消息。
一种可能的实施方式中,若内容数据与目标标识对应预存的目标内容相同,则将第一消息发送给第一客户端之后,消息处理装置,还包括:
清除模块,用于若接收到第一客户端针对第一消息发送的消费成功信息,则清除目标标识和目标内容。
一种可能的实施方式中,服务器还包括第二消息队列,缓存模块具体用于:将第一消息存储至第二消息队列。
一种可能的实施方式中,消息处理装置还包括:
第一消息存储模块,用于若接收到第一客户端针对第一消息发送的消费失败信息,存储第一消息的标识信息和内容数据。
一种可能的实施方式中,存储模块具体用于:通过消费者模块从第二消息队列中拉取第一消息;通过消费者模块将第一消息采用尾插的方式存储至第一消息队列,消费者模块具有消费者的功能。
一种可能的实施方式中,缓存第一消息之后,消息处理装置还包括:
标记模块,用于在第一消息队列中标记第一消息已被消费成功,以使服务器将第三消息发送给对应的第二客户端进行消费,第三消息为第一消息队列中、排序在第一消息后的消息。
第三方面,本申请实施例提供一种电子设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如第一方面中任一项的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行如第一方面中任一项的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序在电子设备上运行时,使得电子设备执行如第一方面中任一项的方法。
本申请实施例提供的消息处理方法、装置、设备及存储介质,该消息处理方法应用于服务器,服务器中设置有第一消息队列,该消息处理方法包括:向第一客户端发送第一消息队列中的第一消息;若接收到第一客户端针对第一消息发送的消费失败信息,则缓存第一消息;将缓存中的第一消息,采用尾插的方式存储至第一消息队列。本申请通过将第一消息队列中消费失败的第一消息通过尾插法存储至第一消息队列,能够避免消费失败的第一消息被丢弃而无法正常被消费,进而影响到第一消息所在的流程任务的正常执行。
本申请的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请提供的消息处理方法的应用场景示意图;
图2为本申请一实施例提供的消息处理方法的流程示意图;
图3为本申请一实施例提供的服务器的示意图一;
图4为本申请另一实施例提供的消息处理方法的流程示意图;
图5为本申请另一实施例提供的服务器的示意图二;
图6为本申请一实施例提供的消息处理装置的结构示意图;
图7为本申请一实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
通常情况下,消息队列中的消息是先进先出的,只有排在头部的消息被消费成功或者被丢弃,才能对后续的消息进行消费。其中,若排在头部的消息消费失败,则会阻碍后续的消息正常消费。若排在头部的消息消费失败后丢弃,则会影响到该丢弃的消息的正常消费。
基于上述问题,本申请提供一种消息处理方法、装置、设备及存储介质,通过将第一消息队列中消费失败的第一消息通过尾插法存储至第一消息队列,能够避免消费失败的第一消息被丢弃而无法正常被消费,进而影响到第一消息所在的流程任务的正常执行。
示例性地,图1为本申请提供的消息处理方法的应用场景示意图。如图1所示,该应用场景可以包括:至少一个生产者客户端(图1示出的客户端11和客户端12)、设置有消息队列131的服务器13、消费者客户端(图1示出的客户端14、客户端15和客户端16)。其中,生产者客户端11生产消息a1、消息a2和消息a3,生产者客户端12生产消息b1、消息b2和消息b3,各生产者客户端对应的消息在消息队列131中顺序存储。其中,消息a1、消息a2和消息a3表示一个完整的流程,消息b1、消息b2和消息b3表示一个完整的流程,只有一个完整的流程对应的消息全部按照顺序消费成功,才能完成该完整的流程所对应的任务。例如,将消息a1发送给消费者客户端14消费成功后,再将消息a2发送给消费者客户端15消费成功后,再将消息a3发送给消费者客户端16消费成功后,该消息a1、消息a2和消息a3对应的任务完成。
示例地,在医药的请货过程中,药店A对应的生产者客户端11发送请货单A给服务器13。服务器13将请货单A进行拆单,得到消息a1、消息a2和消息a3,然后存储在消息队列131中,然后将消息a1发送给采购部对应的消费者客户端14,消费者客户端14审核通过后(即消息a1消费成功),会反馈给服务器13审核通过的信息(消费成功)。服务器13然后会将消息a2发送给总部对应的消费者客户端15,消费者客户端15审核通过后(即消息a2消费成功),会反馈给服务器13审核通过的信息(消费成功)。然后服务器13会将消息a3发送给供应商对应的消费者客户端16进行备货,消费者客户端16在接收到消息a3后会给服务器13返回一个消息a3消费成功的响应信息。则服务器13可以采用上述相同的流程处理后续消息。
需要说明的是,附图1仅是本申请实施例提供的一种应用场景的示意图,本申请实施例不对图1中包括的设备进行限定,也不对图1中设备之间的位置关系进行限定,另外,服务器13可以是独立的服务器,或者,也可以是服务集群等。
下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图2为本申请一实施例提供的消息处理方法的流程示意图。本申请实施例提供一种消息处理方法,应用于服务器,服务器中设置有第一消息队列和第二消息队列。接下来,以服务器作为执行主体进行示例说明。
如图2所示,该消息处理方法包括如下步骤:
S201,向第一客户端发送第一消息队列中的第一消息。
在实际应用中,第一消息队列为MQ消息队列,是一种先进先出的存放消息的容器,消息从消息队列的队尾入队,从队头出队。第一客户端是第一消息的消费者。第一消息就是要传输的数据,可以是简单的文本字符串,也可以是自定义的复杂格式
其中,服务器按照第一消息队列先进先出的原则,将排在第一消息队列对头的第一消息发送给对应的第一客户端。
相应地,第一消息队列允许多个生产者客户端往该一个第一消息队列发送消息。此外第一消息队列也可以对应多个消费者客户端,对应消费第一消息队列中的各消息。其中,第一消息队列遵循的原则是,第一消息队列的消息被消费者客户端成功消费,则删除该第一消息队列的该消费成功的消息。
此外,在服务器向第一客户端发送第一消息队列中的第一消息之前,服务器会接收到第一客户端发送的针对该第一消息的请求。
S202,若接收到第一客户端针对第一消息发送的消费失败信息,则缓存第一消息。
其中,在服务器将第一消息发送给第一客户端后,第一客户端在消费该第一消息失败后,会返回给服务器一响应,该响应为消息消费失败信息。可选的,该响应可以通过java的try catch进行捕捉。
具体地,缓存第一消息,可以是将第一消息缓存至存储器,或者其他容器中。在此不加以限定。
示例性地,参照图3,服务器30中设置有第一消息队列31,第二消息队列32,则在第一消息a1消费失败后,可以将该第一消息a1缓存至第二消息队列32。
在本申请实施例中,可以设置次数阈值,若接收到第一客户端针对第一消息发送的消费失败信息的次数小于次数阈值,则继续向第一客户端发送该第一消息,若接收到第一客户端针对第一消息发送的消费失败信息的次数大于或等于次数阈值,则缓存该第一消息。
S203,将缓存中的第一消息,采用尾插的方式存储至第一消息队列。
具体地,参照图3,将第一消息a1存储至第一消息队列31的尾部,等再次轮到处理第一消息a1,将第一消息a1发送至第一客户端。
可以理解,本申请实施例可以达到闭环处理,不会出现第一消息队列中的消息被丢弃,而导致无法正常消费的问题。
本申请实施例提供的消息处理方法、装置、设备及存储介质,该消息处理方法应用于服务器,服务器中设置有第一消息队列,该消息处理方法包括:向第一客户端发送第一消息队列中的第一消息;若接收到第一客户端针对第一消息发送的消费失败信息,则缓存第一消息;将缓存中的第一消息,采用尾插的方式存储至第一消息队列。本申请通过将第一消息队列中消费失败的第一消息通过尾插法存储至第一消息队列,能够避免消费失败的第一消息被丢弃而无法正常被消费,进而影响到第一消息所在的流程任务的正常执行。
参照图4,示出本申请实施例提供的另一种消息处理方法的步骤流程图,该消息处理方法,具体包括以下步骤:
S401、获取第一消息的标识信息。
其中,第一消息队列中表示同一个任务流程的多个消息具有相同的标识信息。
具体地,第一消息队列中的每个消息都具有标识信息(order ID)。同样的标识信息代表着同一个任务流程。例如,参照图1,在图1中消息a1、消息a2和消息a3为同一顺序的任务流程。则消息a1、消息a2和消息a3的标识信息是相同的。
S402、判断标识信息与预存的目标标识是否相同。
其中,目标标识是消费失败的第二消息的标识信息。若标识信息和目标标识相同,则执行S403。若标识信息与预存的目标标识不同,执行步骤S405。
在实际使用中,消费失败的第二消息的目标标识和目标内容对应预存在存储器(Redis)中。
在本申请中,需要先判断第一消息的标识信息与第二消息的目标标识是否相同。若相同,则确定第一消息和第二消息是属于需要顺序执行的同一任务流程的消息,或者属于相同的消息。
若不同,则确定第一消息和第二消息不属于同一任务的流程的消息,并且该第一消息也为曾被消费失败,因此可以直接发送给第一客户端进行消费。
进一步地,若没有预存的目标标识,则可以直接将第一信息发送给第一客户端。
S403,获取第一消息的内容数据。
其中,若标识信息和目标标识相同,则首先确定第一消息和第二消息不属于同一任务的流程的消息,需要再获取第一消息的内容数据,通过内容数据确定第一消息和第二消息是否为相同的消息。
S404,判断内容数据和目标标识对应预存的目标内容是否相同。
其中,目标内容是第二消息的内容数据。若第一消息内容数据与目标标识对应预存的目标内容相同,执行S405。若内容数据与目标内容不同,则执行S407。
具体地,若目标内容和第二消息的内容数据相同,则确定第一消息和第二消息是同一消息。则该流程是第二消息在消费失败后,尾插至第一消息队列的尾部后,再一次被消费的过程。则将该第一消息直接发送给第一客户端进行消费。
若该第一消息内容数据与目标标识对应预存的目标内容不同,则确定第一消息是与第二消息属于同一任务流程,且不是同一消息。由于第二消息消费失败,且第一消息和第二消息属于顺序的同一任务流程,则需要第二消息消费成功后,才能消费该第一消息,因此直接将第一消息缓存至第二消息队列。
S405,将第一消息发送给第一客户端。
S406,判断接收到的第一客户端针对第一消息发送的是否是消息失败信息。
其中,若接收到第一客户端针对第一消息发送的是消费失败信息,则执行S407。若接收到第一客户端针对第一消息发送的不是消费失败信息,则为消费成功消息,则执行S412。
S407,将第一消息存储至第二消息队列。
其中,第二消息队列是和第一消息队列为同样结构的消息队列,遵循先进先出的规则。这样,在第二消息队列中,先消费失败的消息可以排在后消费失败的消息较前的位置。
此外,第二消息队列作为第一消息队列中的消息补偿的中转器。
S408,在第一消息队列中标记第一消息已被消费成功。
其中,在第一消息队列中标记第一消息已被消费成功,以使服务器将第三消息发送给对应的第二客户端进行消费,第三消息为第一消息队列中、排序在第一消息后的消息。
具体的,标记第一消息消费成功,可以指示对第一消息后的消息继续进行处理。
S409,存储第一消息的标识信息和内容数据。
在本申请中,若存储器中没有存储与第一消息相同的标识信息,则存储该第一消息的标识信息和内容数据,若存储器中已经存储与该第一消息相同的标识信息,则不用存储该第一消息的标识信息和内容数据,只需要将第一消息发送给第二消息队列即可。
具体实现过程中,存储器若存储第一消息的标识信息和内容数据,可以和S407同步执行,也可以先后执行,对执行顺序不加以限定。
S410,通过消费者模块从第二消息队列中拉取第一消息。
在实际应用中,消费者模块具有消费者的功能。消费者模块是在服务器中模拟消费者的一个虚拟模块,用于从第二消息队列中拉取第一消息。
S411,通过消费者模块将第一消息采用尾插的方式存储至第一消息队列。
在本申请实施例中,消费者模块也具有生产者的功能,可以将拉取的第一消息采用尾插的方式存储至第一消息队列。
S412,清除目标标识和目标内容。
其中,在第一消息发送成功后,若第一消息的标识信息和内容数据预存在存储器中,则清除存储在存储器中的该第一消息的标识信息和内容数据,以便后续发送与第一消息属于同一任务流程的其他消息可以正常发送。
参照图5,示出了本申请实施例提供的一种服务器50的结构框图,该服务器50中设置有第一消息队列51、存储器52、第二消息队列53和消费者模块54。基于该服务器50举例说明本申请实施例。具体如下:
首先,确定存储器52中没有存储任何目标标识和目标内容,则获取第一消息队列51的消息a1,将消息a1发送给第一客户端。若接收到第一客户端发送的消息a1消费成功信息,则获取第一消息队列51的消息a2继续发送给对应的客户端。若接收到第一客户端发送的消息a1消息失败信息,则将消息a1的标识信息a作为目标标识和内容数据1作为目标数据对应存储在存储器52中。
同时将消息a1存储至第二消息队列53中,并标记第一消息队列51中的消息a1消费成功,然后通过消费者模块54拉取消息a1,并通过消费者模块将拉取的消息a1通过尾插法存储至第一消息队列51的尾部。
接着获取第一消息队列51中的消息a2的标识信息a,然后确定标识信息a和存储在存储器52中的目标标识a相同,则获取消息a2的内容数据2。确定消息a2的内容数据2与目标标识a对应的内容数据1不同,则将消息a2通过尾插法存储至第二消息队列53,并标记第一消息队列51中的消息a2消费成功,然后通过消费者模块54拉取消息a2,并通过消费者模块将拉取的消息a2通过尾插法存储至第一消息队列52的尾部,则消息a2在第一消息队列中还是排序在消息a1之后。
继续采用处理消息a2相同的方法处理消息a3,则消息a3最终也尾插至第一消息队列51的尾部,排在消息a2之后。
接着处理消息b1,首先获取消息b1的标识信息b,确定该标识信息b与存储器中存储的目标标识a不同,则将消息b1发送给对应的客户端,若收到该客户端返回的消费成功信息,则继续获取b2的标识信息b,确定该标识信息b与存储器中存储的目标标识a不同,则将消息b2发送给对应的客户端,若收到该客户端返回的消费失败信息,则将消息b2的标识信息b作为另一个目标标识,将消息b2的内容数据2作为另一个目标标识的目标内容对应存储。在存储器52,此时,存储器52中存储有两个目标标识(a和b)和各目标标识对应的目标内容。然后采用相同的方式将消息b2尾插至第一消息队列51的尾部。
采用上述相同的方式对消息b2之后的消息进行处理,直到处理到消息a1。然后获取消息a1的标识信息a,确定标识信息a与存储器52中存储的一个目标标识a相同,则获取消息a1的内容数据1,并确定该内容数据和目标标识a对应的目标内容1相同,则将消息a1发送给第一客户端。
综上,在本申请实施例中,能够实现对第一消息队列中的各消息进行闭环处理。并且,当第一消息队列中,具有多个属于同一任务流程,且需要顺序消费的消息时,能够保证各消息按照预设顺序消费成功,进而实现对应任务流程的完成。此外,本申请实施例还能够避免第一消息队列的阻塞,以及第一消息的丢弃。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图6为本申请一实施例提供的消息处理装置的结构示意图。本申请实施例提供一种消息处理装置,该装置可以集成在例如服务器等电子设备上。如图6所示,消息处理装置60包括:发送模块61、缓存模块62和存储模块63。其中:
发送模块61,用于向第一客户端发送第一消息队列中的第一消息;
缓存模块62,用于若接收到第一客户端针对第一消息发送的消费失败信息,则缓存第一消息;
存储模块63,用于将缓存中的第一消息,采用尾插的方式存储至第一消息队列。
进一步地,发送模块61具体用于:获取第一消息的标识信息,其中,第一消息队列中表示同一个任务流程的多个消息具有相同的标识信息;若标识信息与预存的目标标识不同,则将第一消息发送给第一客户端,目标标识是消费失败的第二消息的标识信息。
可选地,发送模块61还用于:若标识信息和目标标识相同,则获取第一消息的内容数据;若内容数据与目标标识对应预存的目标内容相同,则将第一消息发送给第一客户端,目标内容是第二消息的内容数据。
可选地,发送模块61还用于:若内容数据与目标内容不同,则缓存第一消息。
可选地,若内容数据与目标标识对应预存的目标内容相同,则将第一消息发送给第一客户端之后,消息处理装置60,还包括:
清除模块(未示出),用于若接收到第一客户端针对第一消息发送的消费成功信息,则清除目标标识和目标内容。
进一步地,服务器还包括第二消息队列,缓存模块62具体用于:将第一消息存储至第二消息队列。
可选地,消息处理装置60还包括:
第一消息存储模块(未示出),用于若接收到第一客户端针对第一消息发送的消费失败信息,存储第一消息的标识信息和内容数据。
进一步地,存储模块63具体用于:通过消费者模块从第二消息队列中拉取第一消息;通过消费者模块将第一消息采用尾插的方式存储至第一消息队列,消费者模块具有消费者的功能。
可选地,缓存第一消息之后,消息处理装置60还包括:
标记模块(未示出),用于在第一消息队列中标记第一消息已被消费成功,以使服务器将第三消息发送给对应的第二客户端进行消费,第三消息为第一消息队列中、排序在第一消息后的消息。
本申请实施例提供的装置,可用于执行图2和图4所示实施例中的方法,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,处理模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上处理模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(Digital Signal Processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(System-On-a-Chip,简称SOC)的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
图7为本申请一实施例提供的电子设备的结构示意图。如图7所示,该电子设备可以包括:处理器71、存储器72、通信接口73和系统总线74。其中,存储器72和通信接口73通过系统总线74与处理器71连接并完成相互间的通信,存储器72用于存储指令,通信接口73用于和其他设备进行通信,处理器71用于调用存储器中的指令以执行如上述消息处理方法实施例的方案。
该图7中提到的系统总线74可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该系统总线74可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口73用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。
存储器72可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器71可以是通用处理器,包括中央处理器、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行如上任一方法实施例的消息处理方法。
本申请实施例还提供一种运行指令的芯片,芯片用于执行如上任一方法实施例的消息处理方法。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,至少一个处理器可以从该计算机可读存储介质中读取计算机程序,该至少一个处理器执行计算机程序时可实现如上任一方法实施例的消息处理方法。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中,a,b,c可以是单个,也可以是多个。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (13)
1.一种消息处理方法,其特征在于,应用于服务器,所述服务器中设置有第一消息队列,所述消息处理方法包括:
向第一客户端发送所述第一消息队列中的第一消息;
若接收到所述第一客户端针对所述第一消息发送的消费失败信息,则缓存所述第一消息;
将缓存中的所述第一消息,采用尾插的方式存储至所述第一消息队列。
2.根据权利要求1所述的消息处理方法,其特征在于,所述向第一客户端发送所述第一消息队列中的第一消息,包括:
获取所述第一消息的标识信息,其中,所述第一消息队列中表示同一个任务流程的多个消息具有相同的标识信息;
若所述标识信息与预存的目标标识不同,则将所述第一消息发送给所述第一客户端,所述目标标识是消费失败的第二消息的标识信息。
3.根据权利要求2所述的消息处理方法,其特征在于,所述向第一客户端发送所述第一消息队列中的第一消息,还包括:
若所述标识信息和所述目标标识相同,则获取所述第一消息的内容数据;
若所述内容数据与所述目标标识对应预存的目标内容相同,则将所述第一消息发送给所述第一客户端,所述目标内容是所述第二消息的内容数据。
4.根据权利要求3所述的消息处理方法,其特征在于,还包括:
若所述内容数据与所述目标内容不同,则缓存所述第一消息。
5.根据权利要求3所述的消息处理方法,其特征在于,所述若所述内容数据与所述目标标识对应预存的目标内容相同,则将所述第一消息发送给所述第一客户端之后,还包括:
若接收到所述第一客户端针对所述第一消息发送的消费成功信息,则清除所述目标标识和所述目标内容。
6.根据权利要求1至5任一项所述的消息处理方法,其特征在于,所述服务器中还设置有第二消息队列,所述缓存所述第一消息,包括:
将所述第一消息存储至第二消息队列。
7.根据权利要求6所述的消息处理方法,其特征在于,还包括:
若接收到所述第一客户端针对所述第一消息发送的消费失败信息,存储所述第一消息的标识信息和内容数据。
8.根据权利要求6所述的消息处理方法,其特征在于,所述将缓存中的所述第一消息,采用尾插的方式存储至所述第一消息队列,包括:
通过消费者模块从所述第二消息队列中拉取所述第一消息;
通过所述消费者模块将所述第一消息采用尾插的方式存储至所述第一消息队列,所述消费者模块具有消费者的功能。
9.根据权利要求1至5任一项所述的消息处理方法,其特征在于,所述缓存所述第一消息之后,还包括:
在所述第一消息队列中标记所述第一消息已被消费成功,以使所述服务器将第三消息发送给对应的第二客户端进行消费,所述第三消息为所述第一消息队列中、排序在所述第一消息后的消息。
10.一种消息处理装置,其特征在于,应用于服务器,所述服务器中设置有第一消息队列,所述消息处理装置包括:
发送模块,用于向第一客户端发送所述第一消息队列中的第一消息;
缓存模块,用于若接收到所述第一客户端针对所述第一消息发送的消费失败信息,则缓存所述第一消息;
存储模块,用于将缓存中的所述第一消息,采用尾插的方式存储至所述第一消息队列。
11.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在电子设备上运行时,使得电子设备执行如权利要求1至9中任一项所述的方法。
13.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序在电子设备上运行时,使得电子设备执行如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111631962.3A CN114327948A (zh) | 2021-12-28 | 2021-12-28 | 消息处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111631962.3A CN114327948A (zh) | 2021-12-28 | 2021-12-28 | 消息处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114327948A true CN114327948A (zh) | 2022-04-12 |
Family
ID=81014287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111631962.3A Pending CN114327948A (zh) | 2021-12-28 | 2021-12-28 | 消息处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327948A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115118710A (zh) * | 2022-05-25 | 2022-09-27 | 中银金融科技有限公司 | 文件传输方法及装置 |
CN115348231A (zh) * | 2022-08-17 | 2022-11-15 | 北京蔚领时代科技有限公司 | 一种消息处理方法、装置、服务端及存储介质 |
-
2021
- 2021-12-28 CN CN202111631962.3A patent/CN114327948A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115118710A (zh) * | 2022-05-25 | 2022-09-27 | 中银金融科技有限公司 | 文件传输方法及装置 |
CN115118710B (zh) * | 2022-05-25 | 2024-04-19 | 中银金融科技有限公司 | 文件传输方法及装置 |
CN115348231A (zh) * | 2022-08-17 | 2022-11-15 | 北京蔚领时代科技有限公司 | 一种消息处理方法、装置、服务端及存储介质 |
CN115348231B (zh) * | 2022-08-17 | 2023-12-12 | 北京蔚领时代科技有限公司 | 一种消息处理方法、装置、服务端及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108055343B (zh) | 用于机房的数据同步方法及装置 | |
US9361165B2 (en) | Automated merger of logically associated messages in a message queue | |
US8903925B2 (en) | Scheduled messages in a scalable messaging system | |
CN114327948A (zh) | 消息处理方法、装置、设备及存储介质 | |
US9201715B2 (en) | Event overflow handling by coalescing and updating previously-queued event notification | |
CN111949568B (zh) | 一种报文处理方法、装置及网络芯片 | |
US8661083B2 (en) | Method and system for implementing sequence start and increment values for a resequencer | |
US10303627B2 (en) | Hardware queue manager with water marking | |
US9529651B2 (en) | Apparatus and method for executing agent | |
US9736226B2 (en) | Rule distribution server, event processing system and method, and program | |
CN110581887B (zh) | 数据处理方法、装置、区块链节点及存储介质 | |
JP6273069B2 (ja) | データ処理システムおよびデータ処理方法 | |
US20190012268A1 (en) | Configurable hardware queue management and address translation | |
US8254391B2 (en) | Method and system for performing blocking of messages on errors in message stream | |
CN110865769A (zh) | 处理读/写请求的方法、网络存储系统及电子设备 | |
US20110055842A1 (en) | Virtual multiple instance extended finite state machines with wait rooms and/or wait queues | |
CN111225063B (zh) | 用于静态分布式计算架构的数据交换系统及其方法 | |
CN106341440A (zh) | 一种数据更新方法和装置 | |
US10652309B2 (en) | Mechanism to allow a messaging system to automatically switch to asynchronous operation due to high demand | |
US10210106B2 (en) | Configurable hardware queue management | |
CN110827001A (zh) | 一种会计事件记账方法、系统、设备和存储介质 | |
CN110162415B (zh) | 用于处理数据请求的方法、服务器、装置及存储介质 | |
CN113421045A (zh) | 运单信息发送方法、装置、电子设备和计算机可读介质 | |
CN113852610A (zh) | 报文处理方法、装置、计算机设备和存储介质 | |
CN115423475A (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 |