CN111510396A - 一种消息发送方法和相关装置 - Google Patents
一种消息发送方法和相关装置 Download PDFInfo
- Publication number
- CN111510396A CN111510396A CN202010613863.1A CN202010613863A CN111510396A CN 111510396 A CN111510396 A CN 111510396A CN 202010613863 A CN202010613863 A CN 202010613863A CN 111510396 A CN111510396 A CN 111510396A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- sent
- sending
- messages
- 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
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
- H04L47/564—Attaching a deadline to packets, e.g. earliest due date first
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请实施例公开了一种消息发送方法和相关装置,该方法包括:根据待发送消息的产生时间和有效时长剩余时间,确定快消息队列中待发送消息的位置排序;从快消息队列中向发送队列提取待发送消息;所述快消息队列中待发送消息对应的有效时长小于慢消息队列中待发送消息的有效时长;若所述快消息队列为空,从所述慢消息队列中向所述发送队列提取待发送消息;向接收设备发送所述发送队列中的待发送消息。处理设备可以根据消息的有效时长、产生时间和有效时长剩余时间进行分类和排序,优先将快消息队列中产生时间较早、有效时长剩余时间较小的消息进行发送,一定程度上避免了因网络波动时优先发送有效时长较大的消息导致有效时长较小的消息失效的问题。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种消息发送方法和相关装置。
背景技术
在互联网技术中,通过发送消息可以实现数据从发送端向接收端的传递。
在消息发送时,发送端和接收端间的网络质量的波动对消息发送效率有着直接的影响。
然而目前消息发送的相关技术中对网络波动并没有妥善的应对,导致在一些网络波动可能性大的场景下难以保证送达消息的时效性。
发明内容
为了解决上述技术问题,本申请提供了一种消息发送方法,一定程度上避免了由于网络波动时优先发送有效时长较大的消息导致有效时长较小的消息无法及时发送的问题。
本申请实施例公开了如下技术方案:
第一方面,本申请实施例公开了一种消息发送方法,所述方法包括:
根据待发送消息的产生时间和有效时长剩余时间,确定快消息队列中待发送消息的位置排序;
从快消息队列中向发送队列提取待发送消息;其中,所述快消息队列中待发送消息对应的有效时长小于慢消息队列中待发送消息的有效时长;
若所述快消息队列为空,从所述慢消息队列中向所述发送队列提取待发送消息;
向接收设备发送所述发送队列中的待发送消息。
第二方面,本申请实施例公开了一种消息发送装置,所述装置包括第一确定单元、第一提取单元、第二提取单元和发送单元:
所述第一确定单元,用于根据待发送消息的产生时间和有效时长剩余时间,确定快消息队列中待发送消息的位置排序;
所述第一提取单元,用于从快消息队列中向发送队列提取待发送消息;其中,所述快消息队列中待发送消息对应的有效时长小于慢消息队列中待发送消息的有效时长;
所述第二提取单元,用于若所述快消息队列为空,从所述慢消息队列中向所述发送队列提取待发送消息;
所述发送单元,用于向接收设备发送所述发送队列中的待发送消息。
第三方面,本申请实施例公开了一种用于消息发送的设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行第一方面中所述的消息发送方法。
第四方面,本申请实施例公开了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行第一方面中所述的消息发送方法。
由上述技术方案可以看出,处理设备可以根据待发送消息的有效时长将消息分配到不同的消息队列中,其中有效时长较小的待发送消息处于快消息队列中,有效时长较大的待发送消息处于慢消息队列中。在发送待发送消息时,采用了统一的发送队列,该发送队列中的待发送消息优先从快消息队列中进行提取,在快消息队列为空时再从慢消息队列中提取,由于只有一个用于发送消息的发送队列,使得可以更为有效的从整体层面对消息发送进行管理。而且,在对快消息队列中待发送消息进行排序时,会兼顾待发送消息的产生时间和有效时长剩余时间,即在确定排序顺序时,会平衡快超期的待发送消息和产生待发送消息的时序,由此接收设备从发送队列获取的待发送消息除了尽量没有超期以外,还能够一定程度上保留待发送消息产生时的时序关系,为后续的消息处理带来了便利,降低了消息乱序带来的不利影响。并且,优先从快消息队列中向发送队列提取待发送消息,使得时效性较高的待发送消息可以优先向接收设备发送,即使网络出现波动,也可以较好的保证这类消息的发送成功率,降低网络波动带来的影响。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种实际应用场景中消息发送方法的示意图;
图2为本申请实施例提供的一种消息发送方法的流程框图;
图3为本申请实施例提供的一种实际应用场景中消息发送方法的示意图;
图4为本申请实施例提供的一种实际应用场景中消息发送方法的示意图;
图5为本申请实施例提供的一种实际应用场景中消息发送方法的示意图;
图6为本申请实施例提供的一种消息发送装置的结构框图;
图7为本申请实施例提供的一种用于消息发送的设备的结构图;
图8为本申请实施例提供的一种服务器的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
随着互联网技术的不断发展,需要依靠互联网来进行发送的消息也越来越多。其中,不同消息的有效时长可能存在一定的区别。有效时长是指该消息处于有效状态的时间长度,在消息处于有效时长内时,发送出的消息所包括的消息内容为有效内容;在消息过了有效时长时,发送出的消息所包括的消息内容就会失效。因此,为了保证消息内容的可靠性,需要尽可能的在有效时长内进行消息发送。
相关技术中,在进行消息发送时,并没有考虑消息的有效时长,而是杂乱无序的将有效时长大小不一的消息进行混合发送,因此,可能会由于处理设备优先发送一些有效时长较大的消息而导致部分有效时长较小的消息无法得到及时发送,最终超过自己的有效时长而导致消息失效;尤其是当网络质量出现问题时,有效时长较小的消息失效的可能性会大幅提高。
为了解决上述技术问题,本申请提供了一种消息发送方法,处理设备可以根据待发送消息的有效时长对待发送消息进行分类,并在有效时长较小的消息中进一步以待发送消息的产生时间和有效时长剩余时间进行排序,从而优先将有效时长较小的待发送消息中产生时间较早、有效时长剩余时间较小的待发送消息进行发送,一定程度上避免了由于网络波动时优先发送有效时长较大的消息导致有效时长较小的消息无法及时发送的问题。
可以理解的是,该方法可以应用于处理设备上,该处理设备为具有消息发送功能的处理设备,例如可以是具有消息发送功能的终端设备或服务器。该方法可以通过终端设备或服务器独立执行,也可以应用于终端设备和服务器通信的网络场景,通过终端设备和服务器配合执行。其中,终端设备可以为计算机、个人数字助理(Personal DigitalAssistant,简称PDA)、平板电脑等设备。服务器可以理解为是应用服务器,也可以为Web服务器,在实际部署时,该服务器可以为独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。同时,在硬件环境上,本技术已经实现的环境有:ARM架构处理器、X86架构处理器;在软件环境上,本技术已经实现的环境有:Android平台、Windows xp及以上操作系统或Linux操作系统。
此外,本申请提供的技术方案还涉及到云技术领域,如云物联等领域。
物联网(The Internet of Things,简称IOT)是指通过 各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、 连接、互动的物体或过程,采集其声、光、热、电、力学、化 学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。
云物联(Cloud IOT)旨在将传统物联网中传感设备感知的信息和接受的指令连入互联网中,真正实现网络化,并通过云计算技术实现海量数据存储和运算,由于物联网的特性是物与物相连接,实时感知各个“物体”当前的运行状态,在这个过程中会产生大量的数据信息,如何将这些信息汇总,如何在海量信息中筛取有用信息为后续发展做决策支持,这些已成为影响物联网发展的关键问题,而基于云计算和云存储技术的物联云也因此成为物联网技术和应用的有力支持。在本申请提供的技术方案中,可以通过多种边缘计算设备,例如AI摄像头、TX1开发板、TK1开发板、Movidius传感器等。通过这些设备,处理设备可以完成对用户消息等各种消息的采集和监控。
为了便于理解本申请的技术方案,下面将结合实际应用场景,对本申请实施例提供的消息发送方法进行介绍。
参见图1,图1为本申请实施例提供的一种实际应用场景中消息发送方法的示意图。在该实际应用场景中,处理设备为服务器101。其中,该实际应用场景可以应用于一种智能商场,该智能商场中包括有多个用于生成商品消息的终端设备,例如智能商场中的智能摄像头、智能收银机等。该商品消息可以是由智能收银机采集的用户购买的商品交易消息、由智能摄像头采集的用户去过的商品区热度消息、由仓库管理设备统计的商品库存消息等。服务器101可以是该智能商场中的消息传输服务器,该服务器用于从多个终端设备中接收这些购物消息,并将其发送到用于对购物消息进行处理、分析和存储的后台服务器中。
可以理解的是,不同的购物消息所对应的有效时长可能有所不同。例如,由于需要对用户购买的商品进行及时的记录和清算,因此用户购买的商品消息的有效时长较小,可能只有几分钟或者几个小时;而库存补充往往是在隔天或一周一次进行补充,因此商品库存消息的有效时长可以为一天甚至一个周。其中,若有效时长较小的消息失效,可能会给该智能商场带来一定程度的损失。例如,若商品交易消息失效,可能会导致后台服务器无法对商场内的商品消息进行及时的记录,导致出现账目错误等问题。因此,为了在一定程度上保障有效时长较短的消息能够得到及时的发送,如图1所示,服务器101在接收到终端设备上传的购物消息后,可以根据购物消息的有效时长进行分类,将有效时长较小的消息放到快消息队列中,将有效时长较大的消息放到慢消息队列中。其中,快消息队列和慢消息队列都是对用于消息进行存放的消息队列。
其中,为了使快消息队列中的待发送消息的发送顺序更加合理,服务器101还可以根据待发送消息的其他参数来进行排序。例如,可以理解的是,产生时间越早的待发送消息,其超过有效时长的可能性也就越大,同时,按照产生时间进行排序,在一定程度上还可以使后台服务器所记录到的购物消息顺序更加合理;有效时长剩余时间的越小的待发送消息,其就越接近于失效,因此优先发送有效时长剩余时间较小的待发送消息可以进一步的确保消息的有效性。
因此,服务器101还可以根据待发送消息的产生时间和有效时长剩余时间,来确定快消息队列中待发送消息的位置排序。其中,产生时间较早、有效时长剩余时间较短的待发送消息的位置排序较为靠前,产生时间较晚、有效时长剩余时间较大的待发送消息的位置排序较为靠后。可以理解的是,位置排序靠前的待发送消息优先被服务器101发送出去。
例如,在图1所示的示意图中,快消息队列中包括待发送消息1、待发送消息2和待发送消息3,每一条待发送消息都有对应的产生时间和有效时长剩余时间。其中待发送消息1对应的产生时间1最早、有效时长剩余时间1最小,因此排在快消息队列中最靠前的位置。
由于是根据待发送消息的产生时间和有效时长剩余时间来确定的位置排序,因此,基于该位置排序对快消息队列中的待发送消息进行发送时,在一定程度上既可以保障了待发送消息不会失效,又能够尽可能的使后台服务器所接收到的消息顺序能够体现出消息的产生时序,使后台服务器能够更加准确的对消息进行记录和管理。在发送消息时,服务器101优先从快消息队列中,按照已经确定好的位置排序提取待发送消息到发送队列中,该发送队列是用于将待发送消息发送到后台服务器的队列。
在快消息队列不为空时,服务器101持续的发送快消息队列中的待发送消息。只有当快消息队列中不存在未被发送的待发送消息后,服务器101才会从慢消息队列中提取待发送消息到发送队列中,发送给后台服务器。如图所示,服务器101按照快消息队列中的消息顺序,依次提取待发送消息1、待发送消息2和待发送消息3到发送队列中,向后台服务器进行发送。可以理解的是,由于服务器101只通过发送队列这一条消息队列进行消息发送,因此在一定程度上可以使服务器101对消息发送进行更加有效和准确的管理,降低了出现消息的重复发送、遗漏发送或者错误发送等问题的概率。
同时,由于服务器101能够优先发送有效时长较小的消息,在有效时长较小的消息发送完毕后,才会发送有效时长较大的消息,从而在一定程度上提高了有效时长较小的待发送消息的发送优先度,避免了由于发送有效时长较长的消息导致有效时长较小的消息没有得到及时发送,导致其失效。因此,即使出现网络波动、网络质量差等问题,这部分有效时长较小的消息的发送也能够得到一定的保障。
接下来,将结合附图,对本申请实施例提供的一种消息发送方法进行介绍。参见图2,图2为本申请实施例提供的一种消息发送方法的流程图,该方法包括:
S201:根据待发送消息的产生时间和有效时长剩余时间,确定快消息队列中待发送消息的位置排序。
在互联网化的趋势下,越来越多的消息在各种终端设备和服务器之间进行发送和接收。其中,每一条消息都可能具有自己对应的有效时长,该有效时长是指该消息处于有效状态的时间长度,当消息在自己对应的有效时长内未被发送到需要发送的接收方,可能会导致消息内容失效。因此,能否在消息的有效时长内完成对消息的发送是决定能否提高消息发送质量的重要因素。
可以理解的是,不同类型的消息,其对应的有效时长也可能不同。例如,在一间线下零售门店中,为了对VIP客户或者老客户提供更加优质的服务,可以通过安装在门店入口的智能摄像头对进入门店的客户进行身份识别,若识别出有VIP客户、老客户进入后,可以自动生成提醒消息发送到后台,来提醒员工进行接待。由于需要及时接待以防降低用户的购物体验,该提醒消息的有效时长较小,可能只有几秒钟或者几分钟。同时,为了对进入门店的客户进行身份存档,智能摄像头还能够记录客户的人脸图、全身图等,由于只需要在最后发送给后台进行存档记录即可,因此并不需要立即进行发送,该消息的有效时长较大,可以有几小时甚至几天。
由于网络传输的资源有限,因此,若将有效时长大小不一的消息混合发送,可能会导致由于发送某些有效时长较大的消息而导致一些有效时长较小的消息不能够得到及时发送,超过自己的有效时长而失效。尤其是在网络出现波动时,由于网络传输消息的速度较慢,在传输消息时长较大的消息时会花费大量的时间,这种失效情况就会更加严重。
为了尽可能的避免失效问题,在本申请实施例提供的技术方案中,处理设备可以以待发送消息的有效时长作为衡量标准,将待发送消息分开存放在快消息队列和慢消息队列中。其中,消息队列是用于对待发送消息进行存储以待发送的队列,快消息队列和慢消息队列都是消息队列中的一种,快消息队列中待发送消息对应的有效时长小于慢消息队列中待发送消息的有效时长。
此外,为了使消息队列中的消息发送的顺序更加合理,处理设备还可以根据待发送消息的多种属性,对消息队列中的待发送消息进行排序。其中,处理设备所依据的属性可以包括多种,在一种可能的实现方式中,处理设备可以根据待发送消息的产生时间和有效时长剩余时间来确定快消息队列中待发送消息的位置排序。
可以理解的是,由于待发送消息的产生时间和有效时长都可能不同,因此每一条待发送消息都可以有自己对应的产生时间和有效时长剩余时间。产生时间用于标识该待发送消息产生的时间节点,有效时长剩余时间用于标识待发送消息当前时刻与有效时长结束时刻之间的时间间隔。因此,根据产生时间进行消息排序,可以使接收设备能够记录到消息产生时的时序关系;根据有效时长剩余时间进行消息排序,可以使快要超期的待发送消息及时被发送出去。由此可见,处理设备基于待发送消息的有效时长剩余时间和产生时间来确定位置排序,能够在尽可能保障快超期的待发送消息得到发送的同时,在一定程度上保留待发送消息的时序关系,为后续消息处理提供便利。
当然,除了对快消息队列中的待发送消息进行排序外,处理设备同样可以以该方式对慢消息队列中的待发送消息进行排序,起到近似的技术效果。
S202:从快消息队列中向发送队列提取待发送消息。
上已述及,快消息队列中待发送消息对应的有效时长要小于慢消息队列中待发送消息的有效时长,因此, 为了使有效时长较小的消息能够得到及时发送,处理设备可以先从快消息队列中向发送队列提取待发送消息。其中,发送队列是用于将待发送消息发送到接收设备的队列,处于发送队列中的待发送消息用于向接收设备发送。
S203:若快消息队列为空,从慢消息队列中向发送队列提取待发送消息。
在消息发送的过程中,为保障有效时长较短的消息得到及时发送,会优先从快消息队列中向发送队列提取待发送消息;当快消息队列为空时,说明此时已经不存在有效时长较小的待发送消息,处理设备可以利用网络输出资源,来传输慢消息队列中的有效时长较长的待发送消息。处理设备可以以同样的方式,从慢消息队列中向发送队列提取待发送消息进行消息发送。
S204:向接收设备发送发送队列中的待发送消息。
在处理设备提取待发送消息到发送队列中后,可以通过负责该发送队列的发送进程,向接收设备发送该发送队列中的待发送消息。其中,该发送进程用于将发送队列中待发送消息向接收设备进行发送。
为了方便处理设备对待发送消息的发送进行管理,用于发送消息的发送队列可以只设置有一条。处理设备可以对该发送队列所发送的消息进行管理和记录。例如,由于只有一条发送队列,处理设备可以更加方便的控制消息发送时所占用的网络带宽,以及能够更加准确的统计出消息发送的失败率。同时,当处理设备需要控制待发送消息的发送速度时,可以直接通过调整该发送队列中的发送进程来实现,较为便捷。
由上述技术方案可以看出,处理设备可以根据待发送消息的有效时长将消息分配到不同的消息队列中,其中有效时长较小的待发送消息处于快消息队列中,有效时长较大的待发送消息处于慢消息队列中。在发送待发送消息时,采用了统一的发送队列,该发送队列中的待发送消息优先从快消息队列中进行提取,在快消息队列为空时再从慢消息队列中提取,由于只有一个用于发送消息的发送队列,使得可以更为有效的从整体层面对消息发送进行管理。而且,在对快消息队列中待发送消息进行排序时,会兼顾待发送消息的产生时间和有效时长剩余时间,即在确定排序顺序时,会平衡快超期的待发送消息和产生待发送消息的时序,由此接收设备从发送队列获取的待发送消息除了尽量没有超期以外,还能够一定程度上保留待发送消息产生时的时序关系,为后续的消息处理带来了便利,降低了消息乱序带来的不利影响。并且,优先从快消息队列中向发送队列提取待发送消息,使得时效性较高的待发送消息可以优先向接收设备发送,即使网络出现波动,也可以较好的保证这类消息的发送成功率,降低网络波动带来的影响。
由于发送过程中可能存在消息异常、网络波动等问题,并不是所有的待发送消息都一定能够发送到接收设备,可能会出现消息发送失败的情况。在相关技术中,当消息发送失败时,会一直重复发送该消息,这样就会导致其他消息的发送被延后。若该消息一直发送失败,会严重影响其他消息的发送时间,导致其他消息出现失效问题。同时,在相关技术中,若在一定次数连续发送失败后,会舍弃该待发送消息,因此容易造成消息的缺失。
因此,为了防止发送失败的待发送消息影响到其他待发送消息的发送,同时尽可能的对所有待发送消息进行发送,在一种可能的实现方式中,处理设备可以设置一条失败队列,该失败队列用于存储发送失败的待发送消息。若通过发送队列向接收设备发送目标消息时出现发送失败,处理设备可以将该目标消息加入该失败队列。其中,目标消息为发送队列中的一个待发送消息。
由于失败队列中的待发送消息是在发送失败后添加的,因此这部分待发送消息出现问题的可能性较高,再次发送时仍有一定可能会发送失败。基于此,为了使其他消息的发送不受这部分失败队列中消息的影响,处理设备可以优先发送快消息队列和慢消息队列中的待发送消息,在从慢消息队列中向发送队列提取待发送消息时,若慢消息队列为空,则从失败队列中向发送队列提取待发送消息。通过这种方式,处理设备既能够保障正常待发送消息的及时发送,又能够尽可能的保存发送失败的待发送消息,并在不干扰其他消息发送的前提下完成发送。
可以理解的是,在发送失败队列中的待发送消息时,仍然会有一定的概率发送失败。若将这部分仍然难以发送成功的待发送消息与失败队列中的其他待发送消息一起排队发送,可能会由于该消息的多次发送失败,而导致其他进入失败队列的待发送消息无法得到及时发送的问题。为了提高发送队列的发送效率,使进入发送队列的待发送消息能够尽快得到重新发送的机会,在一种可能的实现方式中,失败队列中包括第一失败队列和第二失败队列,其中第一失败队列中待发送消息的位置排序是根据加入第一失败队列的时间确定的,第二失败队列中待发送消息的位置排序是根据待发送消息的发送失败次数确定的。
当快消息队列和慢消息队列中出现发送失败的情况时,发送失败的待发送消息会先进入第一失败队列,该第一失败队列用于按照消息发送失败的时间顺序,对发送失败的待发送消息进行再次发送,例如可以为一种先进先出(First Input First Output,简称FIFO)队列。当目标消息是从第一失败队列中向发送队列提取的,即该目标消息在快消息队列或慢消息队列中发送失败后,在第一失败队列中再次发送失败时,处理设备可以将该目标消息加入第二失败队列。
第二失败队列用于按照根据待发送消息的失败次数确定出的位置排序,对待发送消息进行再次发送。例如,第二失败队列可以为一种最不经常使用(Least FrequentlyUsed,简称LFU)队列,该LFU队列的特性为将一段时间内被访问次数最少的数据优先淘汰。在本申请实施例中,处于第二失败队列中的待发送消息的发送失败次数越多时,其能够被成功发送的可能性一定程度上可能越低。因此,为了使发送成功可能性较高的待发送消息能够优先被发送,处理设备可以通过LFU队列,将第二失败队列中失败次数最少的待发送消息优先进行发送。
由此可见,通过第一失败队列,处理设备能够使失败时间较早的待发送消息得到优先发送;通过第二失败队列,处理设备能够使失败次数较少,即发送成功概率较大的待发送消息得到优先发送。同时,由于第一失败队列中发送失败的待发送消息会被调入第二失败队列进行重复发送,因此在一定程度上避免了第一失败队列中出现消息发送失败时导致其他待发送消息无法及时发送的问题。综上所述,通过第一失败队列和第二失败队列的组合发送,处理设备在保障了第一次发送失败的待发送消息能够及时得到重新发送的同时,也使虽多次发送失败,但仍具有较高发送成功可能性的待发送消息得到优先发送,提高了失败队列的整体发送效率。
当网络质量较差或消息产生数量较多时,消息队列中可能会存储大量的待发送消息。由于消息队列的存储资源有限,因此,当待发送消息的数量超过消息队列的队列容量时,为了防止消息队列因过饱和而出现异常,处理设备需要对消息队列中的待发送消息进行清理。其中,由于这些待发送消息可能具有一定的记录价值,为了尽可能的保证消息的完整性,防止消息丢失,使接收设备能够记录到更多的消息内容,在一种可能的实现方式中,处理设备可以通过对超过队列容量的待发送消息进行持久化存储。
其中,持久化存储是指对待发送消息进行长期保存,使其在较长的时间段内能够被提取及发送。可以理解的是,常规的消息存储手段可以包括缓存和硬件存储两种,缓存是指将待发送消息临时缓存在内存中,这种存储方法在存储设备断电或故障时,存储在内存中的消息会发生丢失,因此可能达不到持久化存储的目的;而硬件存储是指将待发送消息存储到硬盘等存储硬件中,除非存储硬件损坏或失效,否则待发送消息可以长期、稳定的存储在存储硬件中,因此满足持久化存储的需求。在本申请技术方案中,持久化存储采用的是硬件存储方式。
首先,处理设备可以根据实际情况。为快消息队列和慢消息队列的队列容量分别设置第一阈值和第二阈值。当快消息队列的队列容量达到第一阈值时,说明此时快消息队列已经无法容纳下当前数量的待发送消息,需要进行消息清理。其中,由于快消息队列中的位置排序是根据产生时间和有效时长剩余时间来确定的,因此队列中越靠后的消息,其待发送的紧迫程度越低。因此,为了使较为紧迫的待发送消息正常发送,处理设备可以从快消息队列的队尾开始提取第一数量的待发送消息存入存储空间。
其中,第一数量是指能够使快消息队列容量回到正常水平的待发送消息提取数量,存储空间是指具有一定存储容量的硬件存储空间,可以用于对提取出的待发送消息进行持久化存储,例如可以为固态硬盘、机械硬盘等。同理,若慢消息队列的队列容量达到第二阈值,说明此时慢消息队列已经无法容纳下当前数量的待发送消息。由于慢消息队列中的消息是以进入队列的先后顺序或与快消息队列同样的排序方法等进行排序的,因此,队伍中位置越靠后的待发送消息,其发送紧迫程度可能也越低。处理设备同样可以从慢消息队列的队尾开始提取第二数量的待发送消息存入存储空间。其中,第二数量是指能够使慢消息队列容量回到正常水平的待发送消息提取数量。
可以理解的是,提取待发送消息的方式并不是固定的,可以根据不同的排序方式以及不同的持久化存储目的进行相应调整。例如,当持久化存储的目的是在网络波动时,先存储发送优先级较高的待发送消息,防止其因为网络波动而丢失时,处理设备同样可以从队列头部提取待发送消息进行持久化存储,在网络波动结束后,优先发送这部分持久化存储的待发送消息。
此外,失败队列中,若同一待发送消息发送失败的次数过多时,在一定程度上可以说明该待发送消息自身存在较大问题,或者当前的网络环境无法完成该待发送消息的发送。此时,为了进一步提高失败队列中的消息发送效率,使其他待发送消息能够得到更多的发送机会,处理设备可以针对失败队列中待发送消息的失败次数设置第三阈值,该第三阈值是指待发送消息失败次数过高时的发送次数。若失败队列中待发送消息的发送失败次数达到第三阈值,处理设备可以将发送失败次数达到第三阈值的待发送消息从失败队列提出,存入存储空间中。
当快消息队列、慢消息队列和失败队列中的待发送消息都发送完毕后,处理设备有了空闲的网络资源,此时,为了使接收终端能够尽可能的接收更多、更完整的消息,处理设备可以将之前存储在存储空间中的待发送消息提取出来进行重新发送。
由于这部分待发送消息需要处理设备从存储空间中进行提取,因此,在进行消息发送时,可能要先等待一个提取时间。为了提高发送效率,在一种可能的实现方式中,处理设备可以设置一个持久化队列,该持久化队列中的待发送消息是从存储空间中提取的。在对其他消息队列中的待发送消息进行发送时,处理设备可以预先将存储空间中的待发送消息提取到待发送序列中;在处理设备从失败队列中向发送队列提取待发送消息时,若失败队列为空,说明此时其他消息队列中的待发送消息已经清空,处理设备可以从持久化队列中提取待发送消息。通过利用持久化队列预先提取和存储存储空间中的待发送消息,可以使在需要发送存储空间中的待发送消息时,节省下从该存储空间中进行消息提取的时间,提高待发送消息的发送效率。
可以理解的是,为了使存储空间中发送成功概率较大或发送较为紧迫的消息能够得到优先发送,处理设备可以根据不同的发送需求,依据不同的待发送消息属性来确定从存储空间提取待发送消息的顺序,即持久化队列中待发送消息的位置排序。在一种可能的实现方式中,持久化队列中待发送消息的位置排序是根据待发送消息的产生时间、是否来自快消息队列或慢消息队列、发送失败次数中的任意一项或多项的组合来确定的。
其中,根据待发送消息的产生时间进行排序,在一定程度上可以使发送出的消息体现出消息的产生时序;根据待发送消息的来源进行排序,可以使有效时长较小的消息得到优先发送,进一步提高消息发送的及时性;根据发送失败次数进行排序,可以使失败次数较少,即发送成功可能性较高的消息得到优先发送。
当快消息队列中的待发送消息发送完毕后,在处理设备发送慢消息队列中的待发送消息时,可能会出现新的有效时长较小的待发送消息进入到快消息队列中。为了使快消息队列中的每一条待发送消息都能够得到及时发送,在一种可能的实现方式中,若从慢消息队列中提取的待发送消息通过发送队列向接收设备发送成功,处理设备可以重新检查快消息队列中是否存在待发送消息,若存在,则从快消息队列中向发送队列提取待发送消息。
可以理解的是,在本申请实施例提供的技术方案中,发送队列的优先级为快消息队列>慢消息队列>失败队列>持久化队列,因此除了上述方案中对快消息队列进行检查之外,在处理设备对任一消息队列中的任一条待发送消息进行成功发送后,可以对比该消息队列优先级高的消息队列进行检查,并从中选取优先级最高的消息队列中的待发送消息进行发送,从而尽可能的使有效时长较小或发送成功率较大的消息得到优先发送。
由上述内容可以得知,待发送消息的发送会受到网络波动的影响,当网络质量较差时,发送失败的可能性较高;当网络质量优良时,发送失败的可能性会降低。因此,从另一方面来说,通过待发送消息的发送失败率,能够在一定程度上推测出当前的网络质量情况。在网络质量优良时,为了进一步提高消息的发送效率,处理设备可以增加用于对发送队列中的待发送消息进行发送的进程数量;在网络质量较差时,为了控制发送速度,保障每一条待发送消息的发送质量,处理设备可以减少该进程数量。
例如,在一种可能的实现方式中,处理设备可以统计来自快消息队列的待发送消息的第一发送失败率,以及来自慢消息队列的待发送消息的第二发送失败率,并根据该第一发送失败率和第二发送失败率确定整体失败率,然后根据该整体失败率调整从发送队列进行待发送消息发送的进程数量。
其中,由于处理设备中包括多种消息队列,不同消息队列中的待发送消息的消息属性也有所不同,因此,为了提高失败率统计的合理性,使其更能够体现出整体待发送消息的发送情况,在确定整体失败率时,处理设备可以为不同消息队列的失败率设置不同的统计权重。例如,由于快消息队列中待发送消息的有效时长较小,这类消息的消息大小往往要小于慢消息队列中有效时长较大的待发送消息的消息大小,因此,在同样时间的网络波动中,快消息队列中发送失败的数量可能要远大于慢消息队列中发送失败的数量。由此可见,在同样的失败率下,慢消息队列所反映出的网络质量要低于快消息队列所反映出的网络质量。
基于此,为了提高整体失败率的准确度,处理设备可以为快消息队列设置较低的统计权重,为慢消息队列设置较高的统计权重。例如,处理设备在统计30分钟内的失败率时,可以为快消息队列设置0.1的权重,为慢消息队列设置0.9的权重。处理设备可以分别统计30分钟内快消息队列中发送成功的待发送消息数量m,发送失败的数量a;30分钟内慢消息队列中发送成功的待发送消息数量n,发送失败的数量b。整体失败率(Failure Rate,简称FR)计算公式如下:
在本申请实施例提供的技术方案中,有多个技术点是基于待发送消息所具有的属性来实现的,因此,如何读取待发送消息的消息属性也是实现本申请技术方案的重要组成部分。在一种可能的实现方式中,待发送消息具有消息头(MsgHeader),该消息头可以具有多种形式,例如可以为待发送消息中的一个头部数据(Header)的数据结构。该消息头用于记录待发送消息的产生时间、时效类型以及发送失败次数。
如下列代码所示,该代码为一种Header数据结构的消息头代码:
enum MsgTupe {
InstantMsg = 1, // 快消息
SlowMsg = 2 // 慢消息
};
struct MsgHeader {
int fail_counter; // 失败计数
uint64_t timestamp; // 消息产生时间
Msgtype msg_type; // 消息类型
};
由上述代码可见,通过消息头,发送设备能够获知消息所对应的时效类型、发送失败次数、产生时间、消息类型等信息。
其中,时效类型是指待发送消息的有效时长所对应的类型,其包括快消息或慢消息,该时效类型是根据待发送消息的有效时长与不同消息队列中预设的有效时长标准来确定的。快消息的有效时长符合快消息队列中待发送消息对应的有效时长,慢消息的有效时长符合慢消息队列中待发送消息对应的有效时长。
除了通过消息头中的信息来确定待发送队列所处的消息队列外,处理设备还可以通过其他方式来进行消息队列的确定。上已述及,不同的消息类型,其对应的有效时长也可能有所不同,因此,在一种可能的实现方式中,处理设备还可以通过待发送消息的消息类型来确定其所对应的消息队列。
处理设备首先可以获取待分类的待发送消息,然后根据待发送消息的消息类型所对应的有效时长,对待发送进行时效类型分类。其中,根据有效时长的大小,时效类型可以分为慢消息和快消息,属于慢消息的待发送消息有效时长较小,属于快消息的待发送消息有效时长较大。处理设备可以将时效类型属于快消息的待发送消息加入快消息队列,将时效类型属于慢消息的待发送消息加入慢消息队列,
接下来,将结合一种实际应用场景,对本申请实施例提供的一种消息发送方法进行介绍。在该实际应用场景中,该消息方法应用于一种智能零售店中,该智能零售店内包括多台识别设备,例如可以为零售店内的智能摄像头、智能扫描仪等。为了给客户更好的购物体验,这些识别设备能够对进入零售店的客户进行身份识别以及人脸拍摄,其中,进行身份识别时会产生身份识别消息,该身份识别消息用于标识该客户属于普通客户、重要客户(veryimportant person。简称VIP)还是老客户等;进行人脸拍摄时会产生人脸拍摄图像、客户所处的背景图像等图像消息,这部分图像消息用于对进入的客户以及客户行为进行图像记录。
识别设备在产生各种消息后,会通过管理这些识别设备消息发送的发送设备将消息发送至后台服务器,该发送设备即为该实际应用场景中的处理设备。其中,由于身份识别消息用于标识客户身份,而标识客户身份的目的为通知店员,使其能够及时的对重要客户进行接待,因此此类消息有效时长较小,需要及时的发送给后台服务器,让后台服务器来通知店员;图像消息主要用于对客户以及客户进行记录,因此只需要保障该消息能够发送至后台服务器即可,有效时长较大。
参见图3,图3为本申请提供的一种实际应用场景中消息发送方法的示意图。智能零售店的工作人员首先可以通过图4所示的操作界面,对消息上传功能进行设置。如图所示,相关人员可以设置是否上传图片消息,并选择相应的场景类型,例如可以为标准场景、客流量较多的场景、客流量较少的场景等,来进行有针对性的图片上传。此外,还可以选择想要上传的后台服务器的上传地址,以及在出现断网情况时,是否在网络正常后继续传输。同时,工作人员还可以设置图片消息的有效期限,例如在当前客流量较大或网络质量较差时,为了使图片消息能够得到更好的保存,可以适当的提高有效期限等。在图4所示的界面中,该图片有效期限设置为7天。工作人员可以选择是否接入线上运营业务(Operations,简称OPS)。
在设置完成后,识别设备可以识别获取各种消息,并通过发送设备向后台服务器进行发送。如图5所示,图5为一种后台服务器接收消息的界面示意图,通过该界面,可以获知消息的产生时间、消息类型、发送消息的设备名称、消息传输的通道名称、消息处理状态等信息。其中,消息传输的通道名称是指用于传输该消息所利用的通道名称,例如可以为进程间通信(Inter-Process Communication,简称IPC)通道。
首先,发送设备可以获取识别设备所产生的消息,该消息中具有包括消息属性信息的消息头。其中,该消息头是以Header数据结构存储在消息中的,通过消息头,发送设备能够获知消息所对应的时效类型、发送失败次数、产生时间、消息类型等信息。通过消息头中的属性信息,发送设备可以对获取的消息进行分类,将时效类型属于快消息的待发送消息放入快消息队列中,将失效类型属于慢消息的待发送消息放入慢消息队列中。例如,前已述及,身份识别消息的有效时长较小,图片消息的有效时长较大,因此身份识别消息可以放入快消息队列中,图片消息可以放入慢消息队列中。
发送设备可以根据待发送消息的有效时长剩余时间和产生时间,进一步对快消息队列中的待发送消息进行位置排序。其中,发送设备可以以有效时长剩余时间作为排序的主要依据,优先将有效时长剩余时间较小的待发送消息排在前面;以产生时间作为排序的次要依据,当出现有效时长剩余时间相同的待发送消息时,优先将产生时间较早的待发送消息排在前面。
发送设备首先控制发送进程,从快消息队列中提取待发送消息进行发送。当快消息队列为空时,从慢消息队列中继续提取待发送消息进行发送;当快消息和慢消息队列都为空时,从失败队列中提取待发送消息进行发送;在上述队列都为空时,从持久化队列中提取待发送消息进行发送。
在发送设备向后台服务器发送消息时,会根据发送的成功与否,向发送设备返回发送结果。当发送结果为失败时,发送设备会将发送失败的待发送消息缓存入失败队列中,并将消息头中的失败次数初始化为1。当失败次数达到预设的阈值时,发送设备会将该待发送消息进行持久化存储,存入存储空间中。在本实际应用场景中,存储空间为本地磁盘。此外,若快消息队列和慢消息队列中的消息容量达到了一定阈值,发送设备也会从队尾提取一定数量的待发送消息进行持久化存储。
发送设备会从本地磁盘中,按照一定的顺序提取待发送消息放入队列。其中,该顺序可以是通过本地磁盘中待发送消息的产生时间、失败次数和有效时长剩余时间等属性来确定的。此外,发送设备还可以根据后台服务器返回的发送结果,确定出整体失败率FR。当FR<0.1时,发送设备可以增加一个发送进程用于发送待发送消息。为了防止消息发送占用过多的带宽,发送设备可以设定发送进程的最大数量不超过5,即最多有5个发送进程同时进行消息发送。
基于上述实施例提供的一种消息发送方法,本申请实施例还提供了了一种消息发送装置600,参见图6,图6为本申请实施例提供的一种消息发送装置的结构框图,装置600包括第一确定单元601、第一提取单元602、第二提取单元603和发送单元604:
第一确定单元601,用于根据待发送消息的产生时间和有效时长剩余时间,确定快消息队列中待发送消息的位置排序;
第一提取单元602,用于从快消息队列中向发送队列提取待发送消息;其中,快消息队列中待发送消息对应的有效时长小于慢消息队列中待发送消息的有效时长;
第二提取单元603,用于若快消息队列为空,从慢消息队列中向发送队列提取待发送消息;
发送单元604,用于向接收设备发送发送队列中的待发送消息。
在一种可能的实现方式中,装置600还包括第一加入单元和第三提取单元:
第一加入单元,用于若通过发送队列向接收设备发送目标消息时出现发送失败,将目标消息加入失败队列;目标消息为发送队列中的一个待发送消息;
第三提取单元,用于在从慢消息队列中向发送队列提取待发送消息时,若慢消息队列为空,从失败队列中向发送队列提取待发送消息。
在一种可能的实现方式中,失败队列包括第一失败队列和第二失败队列,第一失败队列中待发送消息的位置排序是根据加入第一失败队列的时间确定的,第二失败队列中待发送消息的位置排序是根据待发送消息的发送失败次数确定的;
若目标消息是从第一失败队列中向发送队列提取的,第一加入单元具体用于:
将目标消息加入第二失败队列。
在一种可能的实现方式中,装置600还包括第四提取单元、第五提取单元和第六提取单元:
第四提取单元,用于若快消息队列的队列容量达到第一阈值,从快消息队列的队尾开始提取第一数量的待发送消息存入存储空间;
第五提取单元,用于若慢消息队列的队列容量达到第二阈值,从慢消息队列的队尾开始提取第二数量的待发送消息存入存储空间;
第六提取单元,用于若失败队列中待发送消息的发送失败次数达到第三阈值,将发送失败次数达到第三阈值的待发送消息从失败队列提出,并存入存储空间。
在一种可能的实现方式中,装置600还包括第七提取单元:
第七提取单元,用于从持久化队列中向发送队列提取待发送消息;持久化队列中的待发送消息是从存储空间中获取的,持久化队列中待发送消息的位置排序是根据以下任意一项或多项的组合确定的:
待发送消息的产生时间;
是否来自快消息队列或慢消息队列;
发送失败次数。
在一种可能的实现方式中,装置600还包括第八提取单元:
第八提取单元,用于若从慢消息队列中提取的待发送消息通过发送队列向接收设备发送成功,从快消息队列中向发送队列提取待发送消息。
在一种可能的实现方式中,装置600还包括统计单元、第二确定单元和调整单元:
统计单元,用于统计来自快消息队列的待发送消息的第一发送失败率,以及来自慢消息队列的待发送消息的第二发送失败率;
第二确定单元,用于根据第一发送失败率和第二发送失败率确定整体失败率;
调整单元,用于根据整体失败率调整从发送队列进行待发送消息发送的进程数量。
在一种可能的实现方式中,待发送消息具有消息头,消息头用于记录待发送消息的产生时间、时效类型以及发送失败次数,时效类型包括快消息或慢消息,快消息的有效时长符合快消息队列中待发送消息对应的有效时长,慢消息的有效时长符合慢消息队列中待发送消息对应的有效时长。
在一种可能的实现方式中,装置600还包括获取单元、分类单元、第二加入单元:
获取单元,用于获取待分类的待发送消息;
分类单元,用于根据待发送消息的消息类型所对应的有效时长,对待发送消息进行时效类型分类;
第二加入单元,用于将时效类型属于快消息的待发送消息加入快消息队列,将时效类型属于慢消息的待发送消息加入慢消息队列。
本申请实施例还提供了一种用于消息发送的设备,下面结合附图对该设备进行介绍。请参见图7所示,本申请实施例提供了一种设备,该设备还可以是终端设备,该终端设备可以为包括手机、平板电脑、个人数字助理(Personal Digital Assistant,简称PDA)、销售终端(Point of Sales,简称POS)、车载电脑等任意智能终端,以终端设备为手机为例:
图7示出的是与本申请实施例提供的终端设备相关的手机的部分结构的框图。参考图7,手机包括:射频(Radio Frequency,简称RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(wireless fidelity,简称WiFi)模块770、处理器780、以及电源790等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图7对手机的各个构成部件进行具体的介绍:
RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,简称LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global Systemof Mobile communication,简称GSM)、通用分组无线服务(General Packet RadioService,简称GPRS)、码分多址(Code Division Multiple Access,简称CDMA)、宽带码分多址(Wideband Code Division Multiple Access,简称WCDMA)、长期演进(Long TermEvolution,简称LTE)、电子邮件、短消息服务(Short Messaging Service,简称SMS)等。
存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元730可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(Liquid CrystalDisplay,简称LCD)、有机发光二极管(Organic Light-Emitting Diode,简称OLED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图7中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等; 至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块770,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器780可包括一个或多个处理单元;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
手机还包括给各个部件供电的电源790(比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,该终端设备所包括的处理器780还具有以下功能:
根据待发送消息的产生时间和有效时长剩余时间,确定快消息队列中待发送消息的位置排序;
从快消息队列中向发送队列提取待发送消息;其中,所述快消息队列中待发送消息对应的有效时长小于慢消息队列中待发送消息的有效时长;
若所述快消息队列为空,从所述慢消息队列中向所述发送队列提取待发送消息;
向接收设备发送所述发送队列中的待发送消息。
本申请实施例还提供一种服务器,请参见图8所示,图8为本申请实施例提供的服务器800的结构图,服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在服务器800上执行存储介质830中的一系列指令操作。
服务器800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口858,和/或,一个或一个以上操作系统841,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于图8所示的服务器结构。
本申请实施例还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序用于执行前述各个实施例所述的消息发送方法中的任意一种实施方式。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(英文:read-only memory,缩写:ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (15)
1.一种消息发送方法,其特征在于,所述方法包括:
根据待发送消息的产生时间和有效时长剩余时间,确定快消息队列中待发送消息的位置排序;
从快消息队列中向发送队列提取待发送消息;其中,所述快消息队列中待发送消息对应的有效时长小于慢消息队列中待发送消息的有效时长;
若所述快消息队列为空,从所述慢消息队列中向所述发送队列提取待发送消息;
向接收设备发送所述发送队列中的待发送消息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若通过所述发送队列向所述接收设备发送目标消息时出现发送失败,将所述目标消息加入失败队列;所述目标消息为所述发送队列中的一个待发送消息;
在所述从所述慢消息队列中向所述发送队列提取待发送消息时,若所述慢消息队列为空,从所述失败队列中向所述发送队列提取待发送消息。
3.根据权利要求2所述的方法,其特征在于,所述失败队列包括第一失败队列和第二失败队列,所述第一失败队列中待发送消息的位置排序是根据加入所述第一失败队列的时间确定的,所述第二失败队列中待发送消息的位置排序是根据待发送消息的发送失败次数确定的;
若所述目标消息是从第一失败队列中向所述发送队列提取的,所述将所述目标消息加入失败队列,包括:
将所述目标消息加入所述第二失败队列。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述快消息队列的队列容量达到第一阈值,从所述快消息队列的队尾开始提取第一数量的待发送消息存入存储空间;
若所述慢消息队列的队列容量达到第二阈值,从所述慢消息队列的队尾开始提取第二数量的待发送消息存入所述存储空间;
若所述失败队列中待发送消息的发送失败次数达到第三阈值,将发送失败次数达到第三阈值的待发送消息从所述失败队列提出,并存入所述存储空间。
5.根据权利要求4所述的方法,其特征在于,在所述从所述失败队列中向所述发送队列提取待发送消息时,若所述失败队列为空,所述方法还包括:
从持久化队列中向所述发送队列提取待发送消息;所述持久化队列中的待发送消息是从所述存储空间中获取的,所述持久化队列中待发送消息的位置排序是根据以下任意一项或多项的组合确定的:
待发送消息的产生时间;
是否来自快消息队列或慢消息队列;
发送失败次数。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若从慢消息队列中提取的待发送消息通过所述发送队列向所述接收设备发送成功,从快消息队列中向发送队列提取待发送消息。
7.根据权利要求1-6任意一项所述的方法,其特征在于,所述方法还包括:
统计来自所述快消息队列的待发送消息的第一发送失败率,以及来自所述慢消息队列的待发送消息的第二发送失败率;
根据所述第一发送失败率和所述第二发送失败率确定整体失败率;
根据所述整体失败率调整从所述发送队列进行待发送消息发送的进程数量。
8.根据权利要求1-6任意一项所述的方法,其特征在于,所述待发送消息具有消息头,所述消息头用于记录所述待发送消息的产生时间、时效类型以及发送失败次数,所述时效类型包括快消息或慢消息,所述快消息的有效时长符合所述快消息队列中待发送消息对应的有效时长,所述慢消息的有效时长符合所述慢消息队列中待发送消息对应的有效时长。
9.根据权利要求1-6任意一项所述的方法,其特征在于,所述方法还包括:
获取待分类的待发送消息;
根据所述待发送消息的消息类型所对应的有效时长,对所述待发送消息进行时效类型分类;
将时效类型属于快消息的待发送消息加入所述快消息队列,将时效类型属于慢消息的待发送消息加入所述慢消息队列。
10.一种消息发送装置,其特征在于,所述装置包括第一确定单元、第一提取单元、第二提取单元和发送单元:
所述第一确定单元,用于根据待发送消息的产生时间和有效时长剩余时间,确定快消息队列中待发送消息的位置排序;
所述第一提取单元,用于从快消息队列中向发送队列提取待发送消息;其中,所述快消息队列中待发送消息对应的有效时长小于慢消息队列中待发送消息的有效时长;
所述第二提取单元,用于若所述快消息队列为空,从所述慢消息队列中向所述发送队列提取待发送消息;
所述发送单元,用于向接收设备发送所述发送队列中的待发送消息。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括第一加入单元和第三提取单元:
所述第一加入单元,用于若通过所述发送队列向所述接收设备发送目标消息时出现发送失败,将所述目标消息加入失败队列;所述目标消息为所述发送队列中的一个待发送消息;
所述第三提取单元,用于在所述从所述慢消息队列中向所述发送队列提取待发送消息时,若所述慢消息队列为空,从所述失败队列中向所述发送队列提取待发送消息。
12.根据权利要求11所述的装置,其特征在于,所述失败队列包括第一失败队列和第二失败队列,所述第一失败队列中待发送消息的位置排序是根据加入所述第一失败队列的时间确定的,所述第二失败队列中待发送消息的位置排序是根据待发送消息的发送失败次数确定的;
若所述目标消息是从第一失败队列中向所述发送队列提取的,所述第一加入单元具体用于:
将所述目标消息加入所述第二失败队列。
13.根据权利要求11所述的装置,其特征在于,所述装置还包括第四提取单元、第五提取单元和第六提取单元:
所述第四提取单元,用于若所述快消息队列的队列容量达到第一阈值,从所述快消息队列的队尾开始提取第一数量的待发送消息存入存储空间;
所述第五提取单元,用于若所述慢消息队列的队列容量达到第二阈值,从所述慢消息队列的队尾开始提取第二数量的待发送消息存入所述存储空间;
所述第六提取单元,用于若所述失败队列中待发送消息的发送失败次数达到第三阈值,将发送失败次数达到第三阈值的待发送消息从所述失败队列提出,并存入所述存储空间。
14.一种用于消息发送的设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-9中任意一项所述的消息发送方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行权利要求1-9中任意一项所述的消息发送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010613863.1A CN111510396B (zh) | 2020-06-30 | 2020-06-30 | 一种消息发送方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010613863.1A CN111510396B (zh) | 2020-06-30 | 2020-06-30 | 一种消息发送方法和相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111510396A true CN111510396A (zh) | 2020-08-07 |
CN111510396B CN111510396B (zh) | 2020-10-27 |
Family
ID=71864558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010613863.1A Active CN111510396B (zh) | 2020-06-30 | 2020-06-30 | 一种消息发送方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111510396B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111988391A (zh) * | 2020-08-14 | 2020-11-24 | 网联清算有限公司 | 一种消息发送方法及装置 |
CN112669152A (zh) * | 2020-12-31 | 2021-04-16 | 深圳市辰宝信息服务有限公司 | 大宗商品的交收管理方法、系统和计算机可读存储介质 |
CN114760601A (zh) * | 2022-03-09 | 2022-07-15 | 中国农业银行股份有限公司 | 一种短信重发方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1472937A (zh) * | 2003-06-27 | 2004-02-04 | 中国科学院计算技术研究所 | 一种利用分组头中的剩余生命期进行分组传输服务质量调度的方法 |
CN101620550A (zh) * | 2009-05-27 | 2010-01-06 | 西华师范大学 | 一种基于任务模糊多特征的嵌入式实时调度方法 |
US20140317380A1 (en) * | 2013-04-18 | 2014-10-23 | Denso Corporation | Multi-core processor |
CN106095554A (zh) * | 2016-06-17 | 2016-11-09 | 中国银行股份有限公司 | 在日间联机阶段进行批量数据处理的方法及装置 |
CN106257874A (zh) * | 2016-08-01 | 2016-12-28 | 上海海事大学 | 一种不稳定网络中大数据量远程采集方法与系统 |
CN106302227A (zh) * | 2016-08-05 | 2017-01-04 | 广州市香港科大霍英东研究院 | 混合网络流调度方法和交换机 |
CN107171918A (zh) * | 2017-04-26 | 2017-09-15 | 成都成电光信科技股份有限公司 | 支持优先级的gjb289a总线模块中的消息收发方法 |
CN108199902A (zh) * | 2018-01-24 | 2018-06-22 | 精硕科技(北京)股份有限公司 | 数据传输的处理方法及装置 |
CN111245745A (zh) * | 2020-01-07 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 消息发送方法、装置、节点设备及存储介质 |
-
2020
- 2020-06-30 CN CN202010613863.1A patent/CN111510396B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1472937A (zh) * | 2003-06-27 | 2004-02-04 | 中国科学院计算技术研究所 | 一种利用分组头中的剩余生命期进行分组传输服务质量调度的方法 |
CN101620550A (zh) * | 2009-05-27 | 2010-01-06 | 西华师范大学 | 一种基于任务模糊多特征的嵌入式实时调度方法 |
US20140317380A1 (en) * | 2013-04-18 | 2014-10-23 | Denso Corporation | Multi-core processor |
CN106095554A (zh) * | 2016-06-17 | 2016-11-09 | 中国银行股份有限公司 | 在日间联机阶段进行批量数据处理的方法及装置 |
CN106257874A (zh) * | 2016-08-01 | 2016-12-28 | 上海海事大学 | 一种不稳定网络中大数据量远程采集方法与系统 |
CN106302227A (zh) * | 2016-08-05 | 2017-01-04 | 广州市香港科大霍英东研究院 | 混合网络流调度方法和交换机 |
CN107171918A (zh) * | 2017-04-26 | 2017-09-15 | 成都成电光信科技股份有限公司 | 支持优先级的gjb289a总线模块中的消息收发方法 |
CN108199902A (zh) * | 2018-01-24 | 2018-06-22 | 精硕科技(北京)股份有限公司 | 数据传输的处理方法及装置 |
CN111245745A (zh) * | 2020-01-07 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 消息发送方法、装置、节点设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
王栋: "无线多媒体传感器网络中拥塞控制策略的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111988391A (zh) * | 2020-08-14 | 2020-11-24 | 网联清算有限公司 | 一种消息发送方法及装置 |
WO2022033586A1 (zh) * | 2020-08-14 | 2022-02-17 | 网联清算有限公司 | 一种消息发送方法及装置 |
CN112669152A (zh) * | 2020-12-31 | 2021-04-16 | 深圳市辰宝信息服务有限公司 | 大宗商品的交收管理方法、系统和计算机可读存储介质 |
CN114760601A (zh) * | 2022-03-09 | 2022-07-15 | 中国农业银行股份有限公司 | 一种短信重发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111510396B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111510396B (zh) | 一种消息发送方法和相关装置 | |
US10411945B2 (en) | Time-distributed and real-time processing in information recommendation system, method and apparatus | |
US9626985B2 (en) | Audio processing method and apparatus | |
CN107562539B (zh) | 应用程序处理方法和装置、计算机设备、存储介质 | |
US20230124594A1 (en) | Method, Apparatus, and Mobile Terminal For Associating Notification Messages | |
CN105809481B (zh) | 虚拟物品发送方法、接收方法、装置和系统 | |
CN106302996B (zh) | 消息显示方法及装置 | |
CN106407984B (zh) | 目标对象识别方法及装置 | |
CN109905545B (zh) | 一种消息处理方法及终端、计算机可读存储介质 | |
CN108156508B (zh) | 弹幕信息处理的方法、装置、移动终端、服务器及系统 | |
WO2019128546A1 (zh) | 应用程序处理方法、电子设备、计算机可读存储介质 | |
CN111340587B (zh) | 一种虚拟商品管理方法以及相关装置 | |
CN108848273B (zh) | 一种新消息处理方法、移动终端及存储介质 | |
CN108965977B (zh) | 直播礼物的展示方法、装置、存储介质、终端和系统 | |
EP3499853A1 (en) | Ppg authentication method and device | |
CN105577772A (zh) | 素材接收方法、素材上传方法及装置 | |
CN108810057B (zh) | 用户行为数据的采集方法、装置及存储介质 | |
WO2019096134A1 (zh) | 信息存储方法、装置、存储介质及电子设备 | |
CN110191193A (zh) | 一种终端消息同步方法、装置和移动终端 | |
JP6915074B2 (ja) | メッセージ通知方法及び端末 | |
CN110555155B (zh) | 物品信息推荐方法、设备和存储介质 | |
CN111435377A (zh) | 应用推荐方法、装置、电子设备以及存储介质 | |
CN113453066A (zh) | 一种播放时长确定方法和相关设备 | |
CN108668016B (zh) | 信息处理方法、装置、移动终端和计算机可读存储介质 | |
CN109688175B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40028373 Country of ref document: HK |