掌桥专利:专业的专利平台
掌桥专利
首页

消息处理方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:54:11


消息处理方法、装置、电子设备及存储介质

技术领域

本发明实施例涉及计算机技术领域,尤其涉及一种消息处理方法、装置、电子设备及存储介质。

背景技术

现有技术中,随着通信技术的发展,物联网技术也在逐渐发展和成熟。而现有的物联网设备(包括物联网终端设备和物联网服务端设备)在接收消息时主要是通过消息队列,消息队列配置于消息网关中,由消息网关从发送端接收消息,并将其发送至接收端。消息队列具有先进先出的特点(即first in first out,简写为FIFO),在使用时,发送端将消息发送到消息网关中的某个主题(topic),该主题使用消息队列保存消息,接收端通过订阅该主题来接收消息。

这种消息处理方式存在着以下问题:在消息队列中存在消息堆积时,新产生的消息要等堆积消息发送完后才能得到处理,若要克服这一问题,只能通过调整消息的优先级的方式。

但是这些方式对于IoT物联网场景不能完全适用,尤其是针对物联网中的设备而言。原因在于,针对物联网设备,每个消息在产生时都是重要消息,因此无法预先定义消息的优先级,这样一旦消息堆积,就导致新消息实时性非常差。例如,物联网设备为快递柜,其由于网络断开而堆积了大量消息在云端,现有技术中采用消息队列处理这些堆积消息,快递柜在恢复正常时,需要接收大量离线消息之后才能接收到最新的实时消息。若快递柜在恢复正常后立刻有用户使用,则用户控制快递柜打开时需要延时很久才能打开。

综上所述,现有的消息队列的消息处理方式存在着在消息堆积情况下严重影响实时消息接收及时性的问题。

发明内容

有鉴于此,本发明实施例提供一种消息处理方案,以解决上述部分或全部问题。

根据本发明实施例的第一方面,提供了一种消息处理方法,包括:在确定当前待发送的消息为对物联网设备进行业务操作的实时消息时,调用实时消息推送机对所述实时消息进行优先处理,实时发送至所述实时消息的接收端;若所述实时消息实时发送失败,则调用堆积消息处理机将所述实时消息作为堆积消息进行持久化存储。

根据本发明实施例的第二方面,提供了一种消息处理装置,包括:实时处理模块,用于在确定当前待发送的消息为对物联网设备进行业务操作的实时消息时,调用实时消息推送机对所述实时消息进行优先处理,实时发送至所述实时消息的接收端;堆积处理模块,用于若所述实时消息实时发送失败,则调用堆积消息处理机将所述实时消息作为堆积消息进行持久化存储。

根据本发明实施例的第三方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面所述的消息处理方法对应的操作。

根据本发明实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的消息处理方法。

根据本发明实施例提供的消息处理方案,使用实时消息推送机对实时消息进行优先处理,使用堆积消息处理机对堆积消息进行持久化存储,确保了堆积消息不会影响实时消息的处理,克服了现有技术中使用消息队列的方式处理消息存在的一旦存在堆积消息就会使后续实时消息的处理延迟的问题,确保了实时消息处理的实时性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例一的一种消息处理方法的步骤流程图;

图2a为根据本发明实施例二的一种消息处理方法的步骤流程图;

图2b为根据本发明实施例二的使用场景的示意图;

图2c为根据本发明实施例二的使用场景中实时消息推送机进行消息处理的流程图;

图2d为根据本发明实施例二的使用场景中堆积消息处理机进行消息处理的流程图;

图3为根据本发明实施例三的一种消息处理装置的结构框图;

图4为根据本发明实施例四的一种电子设备的结构示意图。

具体实施方式

为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。

下面结合本发明实施例附图进一步说明本发明实施例具体实现。

实施例一

参照图1,示出了根据本发明实施例一的一种消息处理方法的步骤流程图。

本实施例的消息处理方法包括以下步骤:

步骤S102:在确定当前待发送的消息为对物联网设备进行业务操作的实时消息时,调用实时消息推送机对所述实时消息进行优先处理,实时发送至所述实时消息的接收端。

在本实施例中,实时消息推送机用于处理实时消息,故而所有发送至实时消息推送机的消息均可以确定为实时消息。在一种可行方式中,实时消息推送机可以实现为可调用控件或者可调用文件。

实时消息用于对物联网设备进行业务操作,针对不同的物联网设备或者不同的业务场景或者不同的用户,其对应的实时消息可以是不同的消息,实时消息指示的业务操作也可以不同。例如,物联网设备为快递柜,则对应的实时消息可以指示快递柜打开至少一个柜门的消息,或者实时消息也可以是指示登录某一用户账号的消息等等。又例如,物联网设备为智能音箱,则对应的实时消息可以指示播放音乐的消息,或者实时消息也可以是指示切换登录用户账号的消息,等等。

再例如,针对不同类型的物联网设备其实时消息可以设置不同的处理优先级,如针对快递柜的实时消息的优先级高于针对智能音箱的实施例消息的优先级。

或者,针对同一类型不同的物联网设备也可以设置实时消息具有不同的优先级,如针对物联网设备A的实时消息的优先级高于针对物联网设备B的实时消息的优先级。

或者,针对不同的用户的实时消息,设置不同的优先级,如用户A发送的实时消息的优先级高于用户B发送的实时消息的优先级等等。

本实施例中,将向物联网设备发送的消息区分为实时消息和堆积消息,相应地设置实时消息推送机和堆积消息处理机,两者处理不同的消息对象,其中,实时消息的处理级别优先于堆积消息。也即,在同时存在实时消息和堆积消息的情况下,通过实时消息推送机可以确保实时消息被优先处理,不会受之前的堆积消息影响。

其中,实时消息推送机将实时消息实时发送至对应的接收端,由于其仅处理实时消息,因而保证了即使存在堆积消息的情况下,实时消息也可以被实时、优先处理,确保了接收端接收消息的实时性。

步骤S104:若所述实时消息实时发送失败,则调用堆积消息处理机将所述实时消息作为堆积消息进行持久化存储。

堆积消息处理机用于处理未被所述实时消息推送机实时发送的实时消息(即堆积消息),包括但不限于对堆积消息进行持久化存储及后续根据需要将堆积消息发送至对应的接收端,或者进行其他处理。在本实施例中,所述堆积消息处理机可实现为可调用控件或者可调用文件。

通常情况下,若实时消息实时发送失败,则表示接收端离线或有其他故障,此时,调用堆积消息处理机,将实时消息作为堆积消息,进行持久化存储,以备后续进行适当处理,这样不仅保证了实时消息处理的及时性,而且在接收端故障时可以保存消息,提升了抗故障能力。

通过本实施例,使用实时消息推送机对实时消息进行优先处理,使用堆积消息处理机对堆积消息进行持久化存储,确保了堆积消息不会影响实时消息的处理,克服了现有技术中使用消息队列的方式处理消息存在的一旦存在堆积消息就会使后续实时消息的处理延迟的问题,确保了实时消息处理的实时性。

本实施例的消息处理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。

实施例二

参照图2a,示出了根据本发明实施例二的一种消息处理方法的步骤流程图。

在本实施例中,对消息处理方法的实现过程进行详细描述。本实施例的消息处理方法以下步骤:

步骤S102:在确定当前待发送的消息为对物联网设备进行业务操作的实时消息时,调用实时消息推送机对所述实时消息进行优先处理,实时发送至所述实时消息的接收端。

该步骤S102中与实施例一相同的部分不再进行赘述,下面针对在步骤S102中,调用实时消息推送机对所述实时消息进行优先处理,实时发送至所述实时消息的接收端的实现过程进行详细描述:

在本实施例中,该过程可以实现为:调用所述实时消息推送机对所述实时消息进行优先处理,按照所述实时消息的时间戳实时发送至所述实时消息的接收端。

在本实施例中,获取到发送端发送的消息后,将其作为实时消息,调用实时消息推送机进行处理。例如,以透传方式,按照所述实时消息的时间戳,通过通信协议(例如为AMQP、MQTT、CoAP等)实时发送至所述实时消息的接收端。通过设置时间戳,可以使实时消息的发送能够更为及时和有序。

在发送时,由于接收端的设备数越多,需求的实时消息推送机的推送能力TPS就越高,推送速率取决于接收端的设备数,为了减少此影响,针对接收端有多个设备(例如,接收端是设备集群)的情况,可以随机选取一个接收端的设备作为目标接收端,将实时消息实时发送至该目标接收端,这样就实现了线性扩展的效果。

例如,以接收端的设备是某个业务场景中的服务器集群为例,服务器集群中包括多个服务器,此种情况下,可以任选一个服务器作为目标接收端,发送实时消息。

在将实时消息发送后,可以通过接收端是否返回了应答消息(如Ack消息)确定是否发送成功。

若收到应答消息,表示发送成功,进一步地则可将该实时消息标记为推送成功。

若未收到应答消息,表示发送失败,进一步地则可确定所述接收端处于离线状态,执行步骤S104,即调用所述堆积消息处理机将所述实时消息作为堆积消息进行持久化存储。

在通过实时消息推送机处理的过程中,接收的实时消息不再采用FIFO队列,也不对实时消息进行保序,接收端可以根据实时消息中的时间戳达到实时消息在业务中的有序需求。

此外,实时消息推送机对实时消息进行透传,且不对实时消息进行持久化存储,因此可以获得非常好的推送性能。此种情况下,若由于宕机出现实时消息丢失的情况,可以由发送端重新发送实时消息到实时消息推送机。

步骤S104:若所述实时消息实时发送失败,则调用堆积消息处理机将所述实时消息作为堆积消息进行持久化存储。

在本实施例中,步骤S104中,堆积消息处理机可以根据堆积消息的时间戳生成与其对应的虚拟标识信息,并通过适当方式如NoSQL的DB(如OTS或者HBASE等)存储,根据该虚拟标识信息进行散列存储实现持久化存储。

例如,时间戳指示消息的接收时间为“2019-10-11 11:00:58”,即2019年10月11日,上午11时0分58秒。虚拟标识信息可以是“20191011110058”,也可以是根据时间戳计算出的哈希值等,本实施例对此不作限制。

在实时消息发送失败时,表示接收端处于离线状态,无法正常接收实时消息,此时可以将实时消息作为堆积消息进行持久化存储,以备后续接收端上线后处理。

可选地,在本实施例中,所述方法还包括:

步骤S106:若确定所述接收端从所述离线状态转换为在线状态,则通过所述堆积消息处理机确定与所述接收端匹配的堆积消息,并将匹配的所述堆积消息发送至所述接收端。

一种具体的确定接收端从离线状态转换为在线状态的方式可以是:从接收端获取其发送的心跳信息(其为简单的2字节包,用于告知堆积消息处理机该接收端处于在线状态),接收到心跳信息,则确定其对应的接收端处于在线状态。

此时,堆积消息处理机会确定是否存储有与该接收端匹配的堆积消息,若存在匹配的堆积消息,则将匹配的堆积消息发送给接收端。若不存在匹配的堆积消息,在可以不动作,或根据需要执行其他动作。

针对不同的情况,与接收端匹配的堆积消息可能不同。

在一具体实现中,所述步骤S106包括以下子步骤:

子步骤S1061:通过所述堆积消息处理机获取所述接收端对应的消息消费位点,从持久化存储的堆积消息中,确定是否存在接收时间位于所述消息消费位点对应的时间之后、且与所述接收端匹配的堆积消息。

其中消息消费位点用于指示确定与接收端匹配的堆积消息。用户可以通过调整接收端的消息消费位点,改变匹配的堆积消息,从而实现过滤一部分堆积消息的目的。

在本实施例中,消息消费位点根据时间生成,其可以指示某一时刻或某一时间段。其生成方式可以与虚拟标识信息的生成方式相同或者不同。

在确定与接收端匹配的堆积消息时,获取与接收端对应的消息消费位点,根据消息消费位点指示的时间(记作时间t0),确定接收时间(即时间戳指示的时间)位于时间t0之后,且需要发送给该接收端的堆积消息作为与接收端匹配的堆积消息。

在一种具体实现中,针对某一接收端(记作接收端A),获取其匹配的堆积消息的过程为:

从所有堆积消息中获取到需要发送给接收端A的一个或多个堆积消息(这些堆积消息均记作堆积消息A)。由于时间是单调递增的,因此根据时间生成的消息消费位点和虚拟标识信息均是单调递增的,故而可以通过比较堆积消息A的虚拟标识信息和接收端A的消息消费位点确定该堆积消息A是否位于时间t0之后。若存在位于时间t0之后的堆积消息,则确定存在匹配的堆积消息,执行子步骤S1062;反之,若不存在,则可以不动作。

子步骤S1062:若存在,则将匹配的所述堆积消息发送至所述接收端。

在一种可行方式中,子步骤S1062可以实现为:按照所述接收端对应的QPS速率将匹配的所述堆积消息发送至所述接收端。

由于接收端对堆积消息需求的实时性不高,因此,在堆积消息处理机中,对堆积消息采用降级处理,即QPS(Queries Per Second,每秒查询率)受控模式进行发送,针对每个接收端可以根据经验值、大数据统计分析等方式确定一个堆积消息消费的QPS速率(例如500QPS),在发送堆积消息时,以小于或等于该QPS速率的速率进行发送。这样,就可以防止接收端上线后接收堆积消息使得短时间内QPS速率过高造成接收端负载过大的问题,而且也能够避免接收端故障时造成QPS速率过高而影响堆积消息处理机。

在另一种可行方式中,子步骤S1062可以实现为:从匹配的所述堆积消息中往复拉取与预设消息窗口大小相匹配数量的堆积消息并发送至所述接收端,直至所述匹配的堆积消息全部发送至所述接收端。

预设的消息窗口的大小可以根据需要确定,例如,可一次性传输5个消息、或10个消息、或者15个消息的消息窗口等等。

如果堆积消息数量小于消息窗口大小,则直接拉取全部堆积消息。如果堆积消息数量大于消息窗口大小,则每次按消息窗口大小拉取对应数量的堆积消息。每次拉取到匹配的堆积消息后,将堆积消息发送到接收端。当当前次拉取的堆积消息发送完成后,再次拉取新的堆积消息,如此重复,直至所有匹配的堆积消息发送完毕。

在每个所述堆积消息对应有用于指示消息接收时间的虚拟标识信息的情况下,所述从匹配的所述堆积消息中往复拉取与预设消息窗口大小相匹配数量的堆积消息并发送至所述接收端可以通过下述过程实现:

过程A:针对每一次所述堆积消息的拉取,使用所述预设消息窗口大小的消息拉取窗口、从匹配的所述堆积消息中拉取与所述消息消费位点最接近的、与所述预设消息窗口大小相匹配数量的堆积消息。

例如,匹配的堆积消息的接收时间从“2019-10-11 11:00:58”到“2019-10-11 12:00:00”共计100条堆积消息。预设消息窗口大小为10个。则与所述消息消费位点最接近的、与所述预设消息窗口大小相匹配数量的堆积消息为接收时间为“2019-10-11 11:00:58”的堆积消息和其之后的9个堆积消息。

过程B:将拉取的所述堆积消息,按照与所述接收端对应的QPS速率发送至所述接收端。

过程C:在拉取的所述堆积消息发送完成后,将所述消息消费位点更新为与拉取的所述堆积消息中最新的虚拟标识信息对应的新的消息消费位点。

为了保证一次拉取的堆积消息发送完成后,下次拉取时可以拉取到正确的堆积消息,在当前次的堆积消息发送完成后,将该接收端的消息消费位点更新为与拉取的堆积消息中最新的虚拟标识信息对应的新的消息消费位点,从而在下次拉取时,拉取之后的10个堆积消息。

需要说明的是,前述的多种不同的子步骤S1062的实现方式可以相互适当结合使用,例如,在发送通过预设消息窗口拉取的堆积消息时,按照对应的QPS速率发送等,本实施例对此不作限制。

可选地,为了能够满足用户的需求,减少消息传输,提高消息处理效率,在每个所述堆积消息对应有用于指示消息接收时间的虚拟标识信息的情况下,所述方法还包括:

步骤S108:若确定所述接收端从所述离线状态转换为在线状态,且获取到所述接收端发送的堆积消息拒绝请求,则通过所述堆积消息处理机获取所述接收端对应的消息消费位点,使用与所述接收端匹配的堆积消息中,距离当前时间最近的消息接收时间的虚拟标识信息更新所述消息消费位点。

堆积消息可以由用户在连接到堆积消息处理机时设置为拒绝模式,那么所有堆积消息在接收端上线时被清除。这里的清除方式并不需要删除堆积消息,由于每个堆积消息具有与接收时间值有关的虚拟标识信息是否非自然序递增的,因此在需要清理堆积消息时,只需要将接收的当前的消息消费位点调整为最新的堆积消息的虚拟标识信息就实现了清除所有堆积消息的目的。

下面结合一个物联网的具体的使用场景,对消息处理方法的实现过程进行详细说明:

如图2b所示,在本使用场景中,消息的发送端可以是用户的终端设备(本场景中为手机),当然,发送端也可以是其他物联网设备等。实时消息推送机和堆积消息处理机部署于消息服务端(消息服务器或消息云端),实时消息推送机和堆积消息处理机并行运行,可以做到有堆积消息时也能保障实时消息的畅通。消息的接收端可以是物联网设备(如快递柜、智能音箱、智能门铃、智能摄像头等,本场景中是快递柜)。其中,图2b中所示的t1-t6的多个时刻中,t1时刻早于t2时刻,t2时刻早于t3时刻,依次类推。

图2c示出了一种实时消息推送机发送实时消息的流程图。图2d示出了一种堆积消息处理机处理堆积消息的流程图。

如图2b和图2c所示,在本使用场景中,若用户需要从快递柜中取快递,则通过手机(即发送端)发送实时消息(该实时消息指示快递柜打开某个柜门)到消息服务端,实时消息优先进入实时消息推送机中,实时消息推送机根据实时消息的接收时间确定其对应的虚拟标识信息,并根据实时消息确定其对应的接收端(即某个快递柜),此外可以根据心跳信息确定该接收端是否在线(也可以不确定,省略该步骤),若在线,则将实时消息实时发送到对应的接收端。

若接收端在发送心跳信息之后仍然正常在线,则会接收到实时消息,进行其指示的业务操作(如打开对应的柜门),同时,返回应答消息给实时消息推送机,实时消息推送机接收到该应答消息后将实时消息标记为已发送就完成了实时发送过程。

若接收端在发送心跳信息之后故障而离线,则无法接收实时消息,也不会返回应答消息,实时消息推送机在一段时间接收不到应答消息时,表示发送失败,将该实时消息作为堆积消息发送给堆积消息处理机。此外,对于超出负载能力的实时消息,实时消息推送机也可以将其作为堆积消息发送给堆积消息处理机。

堆积消息处理机将堆积消息持久化存储到磁盘中,以防止丢失。可行地,堆积消息处理机可以离线堆积亿级消息。

如图2b和图2d所示,接收端再次上线后,会每隔一段时间(如1分钟)向消息服务端发送心跳信息,堆积消息处理机在接收到心跳信息后,获知发送心跳信息的接收端当前处于在线状态,堆积消息处理机根据该接收端的消息消费位点确定堆积消息中是否有与该接收端匹配的堆积消息。

若有匹配的堆积消息,则使用消息窗口拉取与预设消息窗口大小相匹配数量的堆积消息(如10条堆积消息),并将拉取的堆积消息发送给该接收端,并等待应答消息,若未获得所有堆积消息的应答消息则继续等待直至超过等待时间。若获得所有应答消息,则更新消息消费点位到当前批次拉取的所有堆积消息中最大的虚拟标识信息,再次确定是否有匹配的堆积消息,,若有,则再次拉取和发送,直至所有匹配的堆积消息发送完成。

在堆积消息发送过程中,如果有新的实时消息(例如用户请求打开柜门的消息),该实时消息会通过实时消息推送机及时发送到接收端,保证实时消息不会受堆积消息的影响。

此外,在堆积消息处理机中,堆积消息具有存活期,即可以设置一个存活期,如果堆积消息超过存活期还未被发送到接收端,则直接将超过存活期的堆积消息进行销毁。存活期可以是3天、几个小时等。

此外,消息服务端中可以设置多个主题(topic),每个主题都可以应用本发明实施例的消息处理方法,即针对每个主题设置实时消息推送机和堆积消息处理机。通过上述方法,可以克服现有技术中通过优先级区分消息不能克服的高优先级队列堵塞实时消息就会剧烈延时的问题,而且能够满足无法区分优先级的业务场景。

通过本实施例,使用实时消息推送机对实时消息进行优先处理,使用堆积消息处理机对堆积消息进行持久化存储,确保了堆积消息不会影响实时消息的处理,克服了现有技术中使用消息队列的方式处理消息存在的一旦存在堆积消息就会使后续实时消息的处理延迟的问题,确保了实时消息处理的实时性。

此外,实时消息优先推送,在接收端性能足够情况下,可线性扩展推送能力,而且实时消息优先,使得大量堆积消息不会干扰实时消息的收发。而且实时消息推送机不需要对实时消息做持久化存储处理,因此可以获取非常高的推送性能。

本实施例的消息处理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。

实施例三

参照图3,示出了根据本发明实施例三的一种消息处理装置的结构框图。

本实施例的消息处理装置包括:实时处理模块302,用于在确定当前待发送的消息为对物联网设备进行业务操作的实时消息时,调用实时消息推送机对所述实时消息进行优先处理,实时发送至所述实时消息的接收端;第一堆积处理模块304,用于若所述实时消息实时发送失败,则调用堆积消息处理机将所述实时消息作为堆积消息进行持久化存储。

可选地,所述实时处理模块302用于调用所述实时消息推送机对所述实时消息进行优先处理,按照所述实时消息的时间戳实时发送至所述实时消息的接收端。

可选地,实时处理模块302用于若所述实时消息实时发送失败,则确定所述接收端处于离线状态,调用所述堆积消息处理机将所述实时消息作为堆积消息进行持久化存储;所述装置还包括:第二堆积处理模块306,用于若确定所述接收端从所述离线状态转换为在线状态,则通过所述堆积消息处理机确定与所述接收端匹配的堆积消息,并将匹配的所述堆积消息发送至所述接收端。

可选地,第二堆积处理模块306在通过所述堆积消息处理机确定与所述接收端匹配的堆积消息,并将匹配的所述堆积消息发送至所述接收端时,用于通过所述堆积消息处理机获取所述接收端对应的消息消费位点,从持久化存储的堆积消息中,确定是否存在接收时间位于所述消息消费位点对应的时间之后、且与所述接收端匹配的堆积消息;若存在,则将匹配的所述堆积消息发送至所述接收端。

可选地,第二堆积处理模块306在所述将匹配的所述堆积消息发送至所述接收端时,用于按照所述接收端对应的QPS速率将匹配的所述堆积消息发送至所述接收端。

可选地,第二堆积处理模块306在若存在,则将匹配的所述堆积消息发送至所述接收端时,用于从匹配的所述堆积消息中往复拉取与预设消息窗口大小相匹配数量的堆积消息并发送至所述接收端,直至所述匹配的堆积消息全部发送至所述接收端。

可选地,每个所述堆积消息对应有用于指示消息接收时间的虚拟标识信息;所述第二堆积处理模块306在所述从匹配的所述堆积消息中往复拉取与预设消息窗口大小相匹配数量的堆积消息并发送至所述接收端时,用于针对每一次所述堆积消息的拉取,使用所述预设消息窗口大小的消息拉取窗口、从匹配的所述堆积消息中拉取与所述消息消费位点最接近的、与所述预设消息窗口大小相匹配数量的堆积消息;将拉取的所述堆积消息,按照与所述接收端对应的QPS速率发送至所述接收端;在拉取的所述堆积消息发送完成后,将所述消息消费位点更新为与拉取的所述堆积消息中最新的虚拟标识信息对应的新的消息消费位点。

可选地,每个所述堆积消息对应有用于指示消息接收时间的虚拟标识信息;所述装置还包括:拒绝处理模块308,用于若确定所述接收端从所述离线状态转换为在线状态,且获取到所述接收端发送的堆积消息拒绝请求,则通过所述堆积消息处理机获取所述接收端对应的消息消费位点,使用与所述接收端匹配的堆积消息中,距离当前时间最近的消息接收时间的虚拟标识信息更新所述消息消费位点。

可选地,所述实时消息推送机用于处理实时消息,所述实时消息推送机为可调用控件、或者可调用文件;和/或,所述堆积消息处理机用于处理未被所述实时消息推送机实时发送的实时消息,所述堆积消息处理机为可调用控件、或者可调用文件。

本实施例的消息处理装置用于实现前述多个方法实施例中相应的消息处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的消息处理装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。

实施例四

参照图4,示出了根据本发明实施例四的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。

如图4所示,该电子设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。

其中:

处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。

通信接口404,用于与其它电子设备如终端设备或服务器进行通信。

处理器402,用于执行程序410,具体可以执行上述消息处理方法实施例中的相关步骤。

具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。

处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。

存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

程序410具体可以用于使得处理器402执行以下操作:在确定当前待发送的消息为对物联网设备进行业务操作的实时消息时,调用实时消息推送机对所述实时消息进行优先处理,实时发送至所述实时消息的接收端;若所述实时消息实时发送失败,则调用堆积消息处理机将所述实时消息作为堆积消息进行持久化存储。

在一种可选的实施方式中,程序410还用于使得处理器402在调用实时消息推送机对所述实时消息进行优先处理,实时发送至所述实时消息的接收端时,调用所述实时消息推送机对所述实时消息进行优先处理,按照所述实时消息的时间戳实时发送至所述实时消息的接收端。

在一种可选的实施方式中,程序410还用于使得处理器402若所述实时消息实时发送失败,则确定所述接收端处于离线状态,调用所述堆积消息处理机将所述实时消息作为堆积消息进行持久化存储;程序410还用于使得处理器402若确定所述接收端从所述离线状态转换为在线状态,则通过所述堆积消息处理机确定与所述接收端匹配的堆积消息,并将匹配的所述堆积消息发送至所述接收端。

在一种可选的实施方式中,程序410还用于使得处理器402在所述通过所述堆积消息处理机确定与所述接收端匹配的堆积消息,并将匹配的所述堆积消息发送至所述接收端时,通过所述堆积消息处理机获取所述接收端对应的消息消费位点,从持久化存储的堆积消息中,确定是否存在接收时间位于所述消息消费位点对应的时间之后、且与所述接收端匹配的堆积消息;若存在,则将匹配的所述堆积消息发送至所述接收端。

在一种可选的实施方式中,程序410还用于使得处理器402在所述将匹配的所述堆积消息发送至所述接收端时,按照所述接收端对应的QPS速率将匹配的所述堆积消息发送至所述接收端。

在一种可选的实施方式中,程序410还用于使得处理器402在若存在,则将匹配的所述堆积消息发送至所述接收端时,从匹配的所述堆积消息中往复拉取与预设消息窗口大小相匹配数量的堆积消息并发送至所述接收端,直至所述匹配的堆积消息全部发送至所述接收端。

在一种可选的实施方式中,每个所述堆积消息对应有用于指示消息接收时间的虚拟标识信息;程序410还用于使得处理器402在所述从匹配的所述堆积消息中往复拉取与预设消息窗口大小相匹配数量的堆积消息并发送至所述接收端时,针对每一次所述堆积消息的拉取,使用所述预设消息窗口大小的消息拉取窗口、从匹配的所述堆积消息中拉取与所述消息消费位点最接近的、与所述预设消息窗口大小相匹配数量的堆积消息;将拉取的所述堆积消息,按照与所述接收端对应的QPS速率发送至所述接收端;在拉取的所述堆积消息发送完成后,将所述消息消费位点更新为与拉取的所述堆积消息中最新的虚拟标识信息对应的新的消息消费位点。

在一种可选的实施方式中,每个所述堆积消息对应有用于指示消息接收时间的虚拟标识信息;程序410还用于使得处理器402确定所述接收端从所述离线状态转换为在线状态,且获取到所述接收端发送的堆积消息拒绝请求,则通过所述堆积消息处理机获取所述接收端对应的消息消费位点,使用与所述接收端匹配的堆积消息中,距离当前时间最近的消息接收时间的虚拟标识信息更新所述消息消费位点。

在一种可选的实施方式中,所述实时消息推送机用于处理实时消息,所述实时消息推送机为可调用控件、或者可调用文件;和/或,所述堆积消息处理机用于处理未被所述实时消息推送机实时发送的实时消息,所述堆积消息处理机为可调用控件、或者可调用文件。

程序410中各步骤的具体实现可以参见上述消息处理方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。

通过本实施例的电子设备,使用实时消息推送机对实时消息进行优先处理,使用堆积消息处理机对堆积消息进行持久化存储,确保了堆积消息不会影响实时消息的处理,克服了现有技术中使用消息队列的方式处理消息存在的一旦存在堆积消息就会使后续实时消息的处理延迟的问题,确保了实时消息处理的实时性。

需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。

上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的消息处理方法。此外,当通用计算机访问用于实现在此示出的消息处理方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的消息处理方法的专用计算机。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。

以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。

相关技术
  • 消息处理方法、消息处理装置、存储介质及电子设备
  • 消息处理方法、消息处理装置、可读存储介质、电子设备
技术分类

06120113096381