CN108009022A - 一种消息处理方法及服务器 - Google Patents

一种消息处理方法及服务器 Download PDF

Info

Publication number
CN108009022A
CN108009022A CN201711077786.7A CN201711077786A CN108009022A CN 108009022 A CN108009022 A CN 108009022A CN 201711077786 A CN201711077786 A CN 201711077786A CN 108009022 A CN108009022 A CN 108009022A
Authority
CN
China
Prior art keywords
message
pointer
server
response status
response
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
Application number
CN201711077786.7A
Other languages
English (en)
Inventor
崔洪清
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Union Mobile Pay Co Ltd
Original Assignee
Union Mobile Pay Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Union Mobile Pay Co Ltd filed Critical Union Mobile Pay Co Ltd
Priority to CN201711077786.7A priority Critical patent/CN108009022A/zh
Publication of CN108009022A publication Critical patent/CN108009022A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/12Messaging; Mailboxes; Announcements
    • H04W4/14Short messaging services, e.g. short message services [SMS] or unstructured supplementary service data [USSD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种消息处理方法及服务器,包括:服务器获取指针队列中的第一消息指针,根据第一消息指针访问该第一消息指针指向的消息,随后获取消息的应答状态,若确定消息已应答,则从消息队列中删除第一消息指针。可见,针对服务器发送的一条消息,服务器通过消息队列和哈希表分别用来存储指向同一消息的两个消息指针,若服务器收到应答消息,可通过哈希表中的第二消息指针修改该消息的应答状态,当通过消息队列中的第一消息指针对消息进行超时判断时,可直接将该第一消息指针从消息队列中删除,无需再进行超时判断,可见,通过第一消息指针和第二消息指针的协作,将应答和超时处理分离开来,有效提高了消息处理的效率。

Description

一种消息处理方法及服务器
技术领域
本发明涉及互联网通信技术领域,尤其涉及一种消息处理方法及服务器。
背景技术
在短信业务中,SP(service provider)服务提供商通过***连接移动网关,为客户提供短信发送服务。***与移动网关之间建立长连接,通过异步发送的方式发送消息,而且每条消息有指定的超时时间,***如果在发送消息后在指定的超时时间内未收到移动网关反馈的应答,则认为此条消息超时,后续***将根据相应的业务逻辑对超时的消息进行处理。
现有技术中,通常使用哈希表Map(如ConcurrentHashMap)作为消息的缓存。***在发送消息时,在消息中添加该消息的超时时刻,并使用该消息的标识作为key添加到Map中。当***收到移动网关反馈的应答时,使用消息标识作为key从Map中查找并删除消息;同时,***中还设置有一个扫描线程定时地扫描map,将每条消息的超时时刻与当前时刻进行比较,若当前时刻大于该消息的超时时刻,则确定该消息已超时。可见,只有在将某条消息的超时时刻与当前时刻进行比较后才能判断出该消息是否超时,因而在超时判断的过程中,需要扫描整个Map中的所有记录,而且,现有技术中在某一消息的超时时间到来之前,扫描线程通常需要执行多次,Map中的一条消息往往也会被扫描多次,比如,消息的超时时间设置为60s,扫描线程每秒扫描一次,那么Map中的一条消息在其超时时刻到来之前将会被扫描60s次。如此,在高并发的环境下,由于Map中缓存有海量消息记录,扫描线程每次扫描仍需扫描Map中的所有记录,且在超时时间之内扫描多次,将使得消息超时判断的效率较低,而且极大地浪费CPU。
因此,目前亟需要一种消息处理方法,用于解决现有技术中消息超时判断的效率较低,而且极大地浪费CPU的技术问题。
发明内容
本发明提供一种消息处理方法及服务器,用于解决现有技术中消息超时判断的效率较低,而且极大地浪费CPU的技术问题。
本发明实施例提供的一种消息处理方法,包括:
服务器获取指针队列中的第一消息指针,根据所述第一消息指针访问所述第一消息指针指向的消息;所述第一消息指针是所述服务器按照消息的发送时间存入所述指针队列的;
所述服务器获取所述消息的应答状态,其中,所述应答状态通过如下方式确认:所述消息初始的应答状态为未应答,若所述服务器收到所述消息的应答消息,则根据所述应答消息中的消息标识,从哈希表中查找指向所述消息的第二消息指针,并根据所述第二消息指针将所述消息的应答状态更改为已应答;所述第二消息指针是所述服务器以所述消息的消息标识为键值存储在所述哈希表中的;
所述服务器确定所述消息的应答状态为已应答时,从所述指针队列中删除所述第一消息指针。
可选地,所述服务器确定所述消息的应答状态为已应答时,还包括:
从所述哈希表中删除所述第二消息指针。
可选地,所述方法还包括:
所述服务器确定所述消息的应答状态为未应答时,获取所述消息的发送时间;
所述服务器根据当前时间和所述消息的发送时间,确定所述消息是否超时;若未超时,则周期性获取所述指针队列中的消息指针;若所述消息超时,则对所述消息进行超时处理。
可选地,所述服务器对所述消息进行超时处理,包括:
从所述指针队列中删除所述第一消息指针并从所述哈希表中删除所述第二消息指针。
可选地,服务器获取指针队列中的第一消息指针之前,还包括:
所述服务器将发送的所述消息、所述消息的发送时间和所述消息的应答状态存入所述服务器的内存。
基于同样的发明构思,本发明提供的一种服务器,所述服务器包括:
处理模块,用于取指针队列中的第一消息指针,根据所述第一消息指针访问所述第一消息指针指向的消息;所述第一消息指针是所述服务器按照消息的发送时间存入所述指针队列的;
获取模块,用于获取所述消息的应答状态,其中,所述应答状态通过如下方式确认:所述消息初始的应答状态为未应答,若所述服务器收到所述消息的应答消息,则根据所述应答消息中的消息标识,从哈希表中查找指向所述消息的第二消息指针,并根据所述第二消息指针将所述消息的应答状态更改为已应答;所述第二消息指针是所述服务器以所述消息的消息标识为键值存储在所述哈希表中的;
所述处理模块还用于,确定所述消息的应答状态为已应答时,从所述指针队列中删除所述第一消息指针。
可选地,所述处理模块还用于:
确定所述消息的应答状态为已应答时,从所述哈希表中删除所述第二消息指针。
可选地,所述处理模块还用于:
确定所述消息的应答状态为未应答时,获取所述消息的发送时间;
根据当前时间和所述消息的发送时间,确定所述消息是否超时;若未超时,则周期性获取所述指针队列中的消息指针;若所述消息超时,则对所述消息进行超时处理。
可选地,所述处理模块具体用于:
从所述指针队列中删除所述第一消息指针并从所述哈希表中删除所述第二消息指针。
可选地,所述服务器还包括收发模块,用于:
将发送的所述消息、所述消息的发送时间和所述消息的应答状态存入所述服务器的内存。
本发明另一实施例提供了一种服务器,其包括存储器和处理器,其中,所述存储器用于存储程序指令,所述处理器用于调用所述存储器中存储的程序指令,按照获得的程序执行上述任一种方法。
本发明另一实施例提供了一种计算机存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述任一种方法。
本发明实施例中,服务器获取指针队列中的第一消息指针,根据第一消息指针访问该第一消息指针指向的消息,随后,获取该消息的应答状态,若确定该消息为已应答,则从消息队列中删除第一消息指针。本发明实施例中,针对服务器发送的一条消息,服务器中具有消息队列和哈希表两种数据结构分别用来存储指向同一消息的两个消息指针,其中,哈希表中的第二消息指针用于在服务器收到该消息对应的应答消息时,通过第二消息指针修改该消息的应答状态,消息队列中的第一消息指针用于在对该消息进行超时判断时,获取消息的应答状态,若消息为已应答,则可直接将该第一消息指针从消息队列中删除,无需再进行超时判断,如此可使服务器继续对消息队列中的下一个消息指针指向的消息进行处理,可见,通过第一消息指针和第二消息指针的协作,将消息的应答和超时处理分离开来,有效提高了超时处理的效率。此外,由于消息队列中存储的消息指针是按照消息的发送时间存入消息队列的,考虑到队列的先进先出特性,服务器将按照消息的发送时间的先后顺序依次对消息队列中的消息指针指向的消息是否超时进行处理,从而可有效避免对消息队列中的消息指针进行多次扫描,浪费CPU资源的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种消息处理方法所适用的存储结构示意图;
图2为本发明实施例提供的一种消息处理方法所对应的流程示意图;
图3为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例,仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面结合说明书附图对本发明实施例做进一步详细描述。
本发明实施例中提供的消息处理方法适用在消息发送领域,所述消息可以是发送至用户手机的短信息,也可以是发送到用户的手机、平板电脑等智能终端中安装的应用程序中的内置消息,本发明对此不做具体限制。
具体的,本发明实施例中的服务器也称为短信或消息平台,它通过与电信运营商或网络运营商的网关建立长连接,通过异步发送的方式为用户发送消息。在这种场景下,用户作为消息的发送方,首先将消息提交至服务器,然后服务器根据该用户在注册消息服务发送时被分配的网关,将消息发送给对应的网关,进而再由网关把消息发送给对应的接收方。
本发明实施例中,服务器发送给网关的每条消息都具有指定的超时时长,该超时时长为一设定的时间段,如1秒钟,10秒钟等等。若服务器在发送消息后,在指定的超时时长内没有收到网关发送的应答消息,则该消息超时,服务器需采用相应的业务逻辑对该消息进行超时处理。需特别指出的是,本发明实施例中,服务器发送给网关的所有消息都具有相同的超时时长。
本发明实施例中,所述电信运行商可以为***、***、中国电信等电信运营商,网络运行商网关可以为各类互联网企业等。
图1为本发明实施例中提供的方法所适用的存储结构示意图,如图1所示,在服务器中包括有消息堆内存、消息队列、消息缓存共3种类型的存储区域。
具体的,消息堆内存用于存储服务器中已发送的消息,消息堆内存中存储的每一条消息都具有消息标识、应答状态、发送时间等多个字段。当服务器将一条消息发送出去后,可将该消息存入消息堆内存,并记录该消息的发送时间,将消息的应答状态设置为初始的未应答状态。
本发明实施例中,服务器也可以是在接收到用户提交的待发送消息后就将消息存入消息堆内存。在这种情形下,消息的状态可以先设置为未发送状态,然后当服务器在把消息发送出去后,记录该消息的发送时间,并修改消息的应答状态为初始的未应答状态。
消息队列和消息缓存均用来存储消息堆内存中已发送的消息的对应的消息指针。当服务器把某一消息发送出去,并将消息存入消息堆内存中后,服务器可创建两个同样的指向该消息的指针,并把一个消息指针存入消息队列,另一指针存入消息缓存。
本发明实施例,利用了队列这种数据结构的先进先出的特性,服务器按照消息的发送时间,将指向消息的消息指针存入消息队列。因此,消息队列中的消息指针是按照消息的发送时间的先后顺序存储的,先发送的消息对应的消息指针位于消息队列的前面,后发送消息对应的消息指针位于消息队列的后面,这样,服务器每次从消息队列中获取到的消息指针,都是当前消息队列中存储的所有消息指针中指向的消息的发送时间最早的一个消息指针。由于消息的发送时间越早,超时时刻到来的也越早,那么若服务器从队列中获取的第一个消息指针指向的消息没有超时,则该消息指针之后其他所有消息指针指向的消息就都没有超时。
相应地,本发明实施例中采用哈希表这种数据结构作为消息缓存。该消息缓存可以为concurrentHashMap这种数据结构作为哈希表的具体实现方式,或者也可以采用其他类型的哈希表来实现,本发明对此不做具体限制。
本发明实施例中,服务器将某一消息的消息标识作为键值key,将指向该消息的消息指针***哈希表中,由于哈希表的快速查找特性,当服务器收到网关发送的应答消息时,可根据应答消息中的消息标识,快速地定位到指向与该应答消息对应的消息的消息指针,从而有效提高了在消息应答的处理效率。
基于上述存储结构,图2示出了本发明实施例中提供的一种消息处理方法所对应的流程示意图,如图2所示,所述方法包括:
步骤S201:服务器获取指针队列中的第一消息指针,根据所述第一消息指针访问所述第一消息指针指向的消息;
步骤S202:所述服务器获取所述消息的应答状态,其中,所述应答状态通过如下方式确认:所述消息初始的应答状态为未应答,若所述服务器收到所述消息的应答消息,则根据所述应答消息中的消息标识,从哈希表中查找指向所述消息的第二消息指针,并根据所述第二消息指针将所述消息的应答状态更改为已应答;
步骤S203:所述服务器确定所述消息的应答状态为已应答时,从所述指针队列中删除所述第一消息指针。
本发明实施例中,针对服务器发送的一条消息,服务器中具有消息队列和哈希表两种数据结构分别用来存储指向同一消息的两个消息指针,其中,哈希表中的第二消息指针用于在服务器收到该消息对应的应答消息时,通过第二消息指针修改该消息的应答状态,消息队列中的第一消息指针用于在对该消息进行超时判断时,获取消息的应答状态,若消息为已应答,则可直接将该第一消息指针从消息队列中删除,无需再进行超时判断,如此可使服务器继续对消息队列中的下一个消息指针指向的消息进行处理,可见,通过第一消息指针和第二消息指针的协作,将消息的应答和超时处理分离开来,有效提高了超时处理的效率。此外,由于消息队列中存储的消息指针是按照消息的发送时间存入消息队列的,考虑到队列的先进先出特性,服务器将按照消息的发送时间的先后顺序依次对消息队列中的消息指针指向的消息是否超时进行处理,从而可有效避免对消息队列中的消息指针进行多次扫描,浪费CPU资源的问题。
具体来说,在步骤S201中,服务器从指针队列中的获取的第一消息指针为消息队列中的第一个消息指针,即该第一消息指针所指向的消息的超时时刻到来的最早。
由于消息指针中存储的是它所指向的那个消息在消息堆内存中的存储地址,因此服务器获取到第一消息指针后,可通过该第一消息指针访问它所指向的那条消息,并在随后的步骤S202中获取该消息的应答状态。
本发明实施例中,消息堆内存中存储的每个已发送消息在服务器将其发送给网关后,初始的应答状态都为未应答,只有服务器接收到了网关成功接收该消息后发送的应答消息后,该消息的应答状态才为已应答。
某一消息对应的应答消息中包括有该消息的消息标识。因此,在步骤S202中当服务器接收到网关发送的应答消息后,可根据应答消息中的消息标识,从哈希表中查找指向该消息的第二消息指针,并通过第二消息指针将该消息的应答状态更改为已应答。
在步骤S203中,服务器若确定第一消息指针指向的消息的应答状态为已应答,则直接将该第一消息指针从消息队列中删除。
由于哈希表中存储的第二消息指针是为了接收应答消息,并修改消息的应答状态的,若该消息的应答状态已被修改为已应答,则服务器也将该第二消息指针一并删除。
此外,在步骤S202中,若服务器根据第一消息指针获取到该消息的应答状态为未应答,则服务器需进一步判断该消息是否超时,具体如下:
获取该消息的发送时间,根据当前时间和获取到的发送时间,判断该消息是否超时,若当前时间与发送时间之间的差值大于等于该消息的超时时长,则确定该消息超时,反之,则该消息还未超时。
进而,若服务器确定该消息未应答且已超时,则可将第一消息指针从指针队列中删除,将第二消息指针从哈希表中删除,并对消息堆内存中存储的该消息进行相应的超时业务逻辑的处理。
若服务器确定该消息未应答且未超时,则可周期性获取指针队列中的消息指针。
本发明实施例中,服务器可通过设置一个超时扫描线程来依次获取消息队列中的消息指针,并对消息指针指向的消息是否应答、是否超时进行判断。在服务器确定该消息未应答且未超时的情况下,服务器周期性地指针队列中的消息指针是指,服务器中断当前的扫描,然后按照某一设定的时间周期(如2ms,5ms等等)再次重新获取该消息指针,重新判断该消息指针指向的消息是否应答以及是否超时。
作为一种优选的实现方式,本发明实施例中,在确定消息未应答也未超时的情况下,服务器可中断当前的扫描,根据当前时间和该消息的超时时长,计算该消息的等待时长,即当前时间距离该消息超时时刻到来时所需的时间,并在经过该等待时长的时间之后再次获取该第一消息指针,该第一消息指针与前次获取的第一消息指针为同一消息指针,此时,该第一消息指针指向的消息就已超时,服务器删除第一消息指针和第二消息指针,并对该消息进行超时处理。
可以看出,针对服务器获取的第一消息指针,若服务器在该第一消息指针指向的消息的超时时刻到来前收到该消息对应的应答消息,则该第一消息指针在其对应的消息超时之前,就会从消息队列中被删除;若服务器在该第一消息指针指向的消息的超时时刻到来前没有收到该消息对应的应答消息,则服务器在该消息对应的超时时刻到来时,确定该消息已超时,将第一消息指针从消息队列中删除。
因而,每个第一消息指针都至少在其对应的消息超时时刻到来时被删除,当前的第一消息指针被删除后,服务器就会从消息队列中获取下一条消息指针,即将下一条消息指针作为新的第一消息指针,再次执行上述步骤S201至步骤S203中的处理流程。
本发明实施例,通过哈希表中的第二消息指针与消息队列中的第一消息指针协作,利用消息队列中前面的消息指针指向的消息未超时,后面的消息也一定未超时的特点,可有效降低无效扫描的次数,提高***的资源利用率,提升在高并发环境下***的整体性能。
基于同样的发明构思,本发明实施例还提供一种服务器,图3为本发明实施例中提供的一种服务器的结构示意图,如图3所示,该服务器300包括:
处理模块301,用于取指针队列中的第一消息指针,根据所述第一消息指针访问所述第一消息指针指向的消息;所述第一消息指针是所述服务器按照消息的发送时间存入所述指针队列的;
获取模块302,用于获取所述消息的应答状态,其中,所述应答状态通过如下方式确认:所述消息初始的应答状态为未应答,若所述服务器收到所述消息的应答消息,则根据所述应答消息中的消息标识,从哈希表中查找指向所述消息的第二消息指针,并根据所述第二消息指针将所述消息的应答状态更改为已应答;所述第二消息指针是所述服务器以所述消息的消息标识为键值存储在所述哈希表中的;
所述处理模块301还用于,确定所述消息的应答状态为已应答时,从所述指针队列中删除所述第一消息指针。
可选地,所述处理模块301还用于:
确定所述消息的应答状态为已应答时,从所述哈希表中删除所述第二消息指针。
可选地,所述处理模块301还用于:
确定所述消息的应答状态为未应答时,获取所述消息的发送时间;
根据当前时间和所述消息的发送时间,确定所述消息是否超时;若未超时,则周期性获取所述指针队列中的消息指针;若所述消息超时,则对所述消息进行超时处理。
可选地,所述处理模块301具体用于:
从所述指针队列中删除所述第一消息指针并从所述哈希表中删除所述第二消息指针。
可选地,所述服务器还包括收发模块303,用于:
将发送的所述消息、所述消息的发送时间和所述消息的应答状态存入所述服务器的内存。
基于同样的发明构思,本发明实施例还提供另一种服务器,该基站可以包括中央处理器(Center Processing Unit,CPU)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(Liquid CrystalDisplay,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器提供存储器中存储的程序指令和数据。在本发明实施例中,存储器可以用于存储消息的超时处理方法的程序。
处理器通过调用存储器存储的程序指令,处理器用于按照获得的程序指令执行上述消息的超时处理方法。
基于同样的发明构思,本发明实施例提供了一种计算机存储介质,用于储存为上述服务器所用的计算机程序指令,其包含用于执行上述消息的超时处理方法的程序。
所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等。
由上述内容可以看出:
本发明实施例中,针对服务器发送的一条消息,服务器中具有消息队列和哈希表两种数据结构分别用来存储指向同一消息的两个消息指针,其中,哈希表中的第二消息指针用于在服务器收到该消息对应的应答消息时,通过第二消息指针修改该消息的应答状态,消息队列中的第一消息指针用于在对该消息进行超时判断时,获取消息的应答状态,若消息为已应答,则可直接将该第一消息指针从消息队列中删除,无需再进行超时判断,如此可使服务器继续对消息队列中的下一个消息指针指向的消息进行处理,可见,通过第一消息指针和第二消息指针的协作,将消息的应答和超时处理分离开来,有效提高了超时处理的效率。此外,由于消息队列中存储的消息指针是按照消息的发送时间存入消息队列的,考虑到队列的先进先出特性,服务器将按照消息的发送时间的先后顺序依次对消息队列中的消息指针指向的消息是否超时进行处理,从而可有效避免对消息队列中的消息指针进行多次扫描,浪费CPU资源的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或两个以上其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或两个以上流程和/或方框图一个方框或两个以上方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或两个以上流程和/或方框图一个方框或两个以上方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或两个以上流程和/或方框图一个方框或两个以上方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种消息处理方法,其特征在于,所述方法包括:
服务器获取指针队列中的第一消息指针,根据所述第一消息指针访问所述第一消息指针指向的消息;所述第一消息指针是所述服务器按照消息的发送时间存入所述指针队列的;
所述服务器获取所述消息的应答状态,其中,所述应答状态通过如下方式确认:所述消息初始的应答状态为未应答,若所述服务器收到所述消息的应答消息,则根据所述应答消息中的消息标识,从哈希表中查找指向所述消息的第二消息指针,并根据所述第二消息指针将所述消息的应答状态更改为已应答;所述第二消息指针是所述服务器以所述消息的消息标识为键值存储在所述哈希表中的;
所述服务器确定所述消息的应答状态为已应答时,从所述指针队列中删除所述第一消息指针。
2.根据权利要求1所述的方法,其特征在于,所述服务器确定所述消息的应答状态为已应答时,还包括:
从所述哈希表中删除所述第二消息指针。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述服务器确定所述消息的应答状态为未应答时,获取所述消息的发送时间;
所述服务器根据当前时间和所述消息的发送时间,确定所述消息是否超时;若未超时,则周期性获取所述指针队列中的消息指针;若所述消息超时,则对所述消息进行超时处理。
4.根据权利要求3所述的方法,其特征在于,所述服务器对所述消息进行超时处理,包括:
从所述指针队列中删除所述第一消息指针并从所述哈希表中删除所述第二消息指针。
5.根据权利要求1至4中任一项所述的方法,其特征在于,服务器获取指针队列中的第一消息指针之前,还包括:
所述服务器将发送的所述消息、所述消息的发送时间和所述消息的应答状态存入所述服务器的内存。
6.一种服务器,其特征在于,所述服务器包括:
处理模块,用于取指针队列中的第一消息指针,根据所述第一消息指针访问所述第一消息指针指向的消息;所述第一消息指针是所述服务器按照消息的发送时间存入所述指针队列的;
获取模块,用于获取所述消息的应答状态,其中,所述应答状态通过如下方式确认:所述消息初始的应答状态为未应答,若所述服务器收到所述消息的应答消息,则根据所述应答消息中的消息标识,从哈希表中查找指向所述消息的第二消息指针,并根据所述第二消息指针将所述消息的应答状态更改为已应答;所述第二消息指针是所述服务器以所述消息的消息标识为键值存储在所述哈希表中的;
所述处理模块还用于,确定所述消息的应答状态为已应答时,从所述指针队列中删除所述第一消息指针。
7.根据权利要求6所述的服务器,其特征在于,所述处理模块还用于:
确定所述消息的应答状态为已应答时,从所述哈希表中删除所述第二消息指针。
8.根据权利要求6所述的服务器,其特征在于,所述处理模块还用于:
确定所述消息的应答状态为未应答时,获取所述消息的发送时间;
根据当前时间和所述消息的发送时间,确定所述消息是否超时;若未超时,则周期性获取所述指针队列中的消息指针;若所述消息超时,则对所述消息进行超时处理。
9.根据权利要求8所述的服务器,其特征在于,所述处理模块具体用于:
从所述指针队列中删除所述第一消息指针并从所述哈希表中删除所述第二消息指针。
10.根据权利要求6至9中任一项所述的服务器,其特征在于,所述服务器还包括收发模块,用于:
将发送的所述消息、所述消息的发送时间和所述消息的应答状态存入所述服务器的内存。
11.一种服务器,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1至5中任一项所述的方法。
12.一种计算机存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如权利要求1至5中任一项所述的方法。
CN201711077786.7A 2017-11-06 2017-11-06 一种消息处理方法及服务器 Pending CN108009022A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711077786.7A CN108009022A (zh) 2017-11-06 2017-11-06 一种消息处理方法及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711077786.7A CN108009022A (zh) 2017-11-06 2017-11-06 一种消息处理方法及服务器

Publications (1)

Publication Number Publication Date
CN108009022A true CN108009022A (zh) 2018-05-08

Family

ID=62051215

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711077786.7A Pending CN108009022A (zh) 2017-11-06 2017-11-06 一种消息处理方法及服务器

Country Status (1)

Country Link
CN (1) CN108009022A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558107A (zh) * 2018-12-04 2019-04-02 中国航空工业集团公司西安航空计算技术研究所 一种共享缓冲区的fc消息接收管理方法
CN109697592A (zh) * 2018-12-21 2019-04-30 江苏满运软件科技有限公司 基于环形数组的货源下架方法、***、设备及存储介质
CN110764930A (zh) * 2019-10-21 2020-02-07 中国民航信息网络股份有限公司 基于消息模式的请求或应答处理方法及装置
CN112019305A (zh) * 2019-05-28 2020-12-01 阿里巴巴集团控股有限公司 数据传输方法、装置、设备及存储介质
CN112181242A (zh) * 2019-07-02 2021-01-05 北京百度网讯科技有限公司 页面展示方法及装置
CN112860719A (zh) * 2021-02-05 2021-05-28 北京百度网讯科技有限公司 数据处理方法、装置及电子设备
CN114138520A (zh) * 2020-05-13 2022-03-04 浙江创邻科技有限公司 分布式消息处理方法及***
CN114338390A (zh) * 2022-03-10 2022-04-12 广东统信软件有限公司 一种服务器配置方法、计算设备及存储介质
CN114979169A (zh) * 2022-05-27 2022-08-30 山东派盟网络科技有限公司 一种网络资源推送方法、装置、存储介质及电子设备
CN114979249A (zh) * 2022-03-30 2022-08-30 阿里巴巴(中国)有限公司 消息句柄的创建方法、消息推送方法及相关装置和***

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101163139A (zh) * 2006-10-11 2008-04-16 国际商业机器公司 拒绝冗余重传的sip消息的方法和设备
CN101178667A (zh) * 2007-12-03 2008-05-14 中兴通讯股份有限公司 一种***进程调度下无效超时消息的方法及消息发送方法
US20080162663A1 (en) * 2006-10-27 2008-07-03 Hewlett-Packard Development Company, L.P. Computer system with network interface retransmit
CN101561767A (zh) * 2008-04-16 2009-10-21 上海聚力传媒技术有限公司 一种基于操作***的任务执行方法和装置
CN101739296A (zh) * 2009-12-28 2010-06-16 广州菲音信息科技有限公司 数据处理***和方法
US20120320909A1 (en) * 2011-06-16 2012-12-20 Ziegler Michael L Sending request messages over designated communications channels
CN106201432A (zh) * 2016-07-19 2016-12-07 网易(杭州)网络有限公司 目标对象的信息的处理方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101163139A (zh) * 2006-10-11 2008-04-16 国际商业机器公司 拒绝冗余重传的sip消息的方法和设备
US20080162663A1 (en) * 2006-10-27 2008-07-03 Hewlett-Packard Development Company, L.P. Computer system with network interface retransmit
CN101178667A (zh) * 2007-12-03 2008-05-14 中兴通讯股份有限公司 一种***进程调度下无效超时消息的方法及消息发送方法
CN101561767A (zh) * 2008-04-16 2009-10-21 上海聚力传媒技术有限公司 一种基于操作***的任务执行方法和装置
CN101739296A (zh) * 2009-12-28 2010-06-16 广州菲音信息科技有限公司 数据处理***和方法
US20120320909A1 (en) * 2011-06-16 2012-12-20 Ziegler Michael L Sending request messages over designated communications channels
CN106201432A (zh) * 2016-07-19 2016-12-07 网易(杭州)网络有限公司 目标对象的信息的处理方法和装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558107A (zh) * 2018-12-04 2019-04-02 中国航空工业集团公司西安航空计算技术研究所 一种共享缓冲区的fc消息接收管理方法
CN109697592A (zh) * 2018-12-21 2019-04-30 江苏满运软件科技有限公司 基于环形数组的货源下架方法、***、设备及存储介质
CN112019305B (zh) * 2019-05-28 2023-04-18 阿里巴巴集团控股有限公司 数据传输方法、装置、设备及存储介质
CN112019305A (zh) * 2019-05-28 2020-12-01 阿里巴巴集团控股有限公司 数据传输方法、装置、设备及存储介质
CN112181242B (zh) * 2019-07-02 2021-11-02 北京百度网讯科技有限公司 页面展示方法及装置
CN112181242A (zh) * 2019-07-02 2021-01-05 北京百度网讯科技有限公司 页面展示方法及装置
CN110764930A (zh) * 2019-10-21 2020-02-07 中国民航信息网络股份有限公司 基于消息模式的请求或应答处理方法及装置
CN114138520A (zh) * 2020-05-13 2022-03-04 浙江创邻科技有限公司 分布式消息处理方法及***
CN112860719A (zh) * 2021-02-05 2021-05-28 北京百度网讯科技有限公司 数据处理方法、装置及电子设备
CN112860719B (zh) * 2021-02-05 2023-09-29 北京百度网讯科技有限公司 数据处理方法、装置及电子设备
CN114338390A (zh) * 2022-03-10 2022-04-12 广东统信软件有限公司 一种服务器配置方法、计算设备及存储介质
CN114979249A (zh) * 2022-03-30 2022-08-30 阿里巴巴(中国)有限公司 消息句柄的创建方法、消息推送方法及相关装置和***
CN114979169A (zh) * 2022-05-27 2022-08-30 山东派盟网络科技有限公司 一种网络资源推送方法、装置、存储介质及电子设备
CN114979169B (zh) * 2022-05-27 2024-03-29 山东派盟网络科技有限公司 一种网络资源推送方法、装置、存储介质及电子设备

Similar Documents

Publication Publication Date Title
CN108009022A (zh) 一种消息处理方法及服务器
CN104618226B (zh) 一种信息处理方法、客户端和服务器
CN103108320A (zh) 一种监控移动设备的应用程序的方法和***
CN106097057B (zh) 一种虚拟物品发放方法及装置
CN111918225B (zh) 一种基于多运营商发送短信的方法
CN105898085B (zh) 骚扰通信账号的识别方法及装置
CN111010527B (zh) 一种通过短信链接建立视频通话的方法及相关装置
CN105516258A (zh) 信息交互***、方法及装置
CN106330683A (zh) 一种多媒体座席***
CN109040970A (zh) 基于云计算的业务规划办理方法及终端设备
CN114125050A (zh) 消息调度方法、装置、设备及存储介质
CN109409961A (zh) 自助获取停车优惠券的方法、终端、***及存储介质
CN108023938A (zh) 一种消息发送方法及服务器
CN104967648A (zh) 一种网际协议地址的调度方法、装置和***
CN110572311B (zh) 一种邮件下载的方法及终端
CN107770203B (zh) 一种服务请求转发方法、装置及***
CN106658670A (zh) 一种无线保真Wi‑Fi扫描方法及移动终端
CN104320766A (zh) 垃圾短信识别方法、装置及设备
CN109522202A (zh) 一种软件测试的方法和装置
CN110070389B (zh) 一种业务推广统计方法、装置及计算机可读存储介质
CN106817392A (zh) 一种数据处理方法及***
CN108540949B (zh) 一种免流量接收彩信产品的方法
CN108536854A (zh) 数据交互的方法、装置及计算机可读存储介质
CN103618625B (zh) 一种微博中网络资源的控制方法、装置和***
US20080040438A1 (en) Device and Method of Sending and Receiving a Message

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

Application publication date: 20180508

RJ01 Rejection of invention patent application after publication