消息发送、接收方法和装置的制造方法

文档序号:10538571阅读:261来源:国知局
消息发送、接收方法和装置的制造方法
【专利摘要】本发明公开了一种消息发送、接收方法和装置,该消息发送方法包括:发送第一消息至目标接收器,并异步处理本地其他服务;检测所述第一消息是否被成功发送;响应于所述第一消息发送失败时,将所述第一消息记录在消息队列中。将消息发送和接收与具体业务剥离进行异步处理,并且实现了对失败消息的保存,能够记录发送失败的消息,避免因消息丢失或者业务数据中断而需要数据回滚。
【专利说明】
消息发送、接收方法和装置
技术领域
[0001]本发明属于互联网领域,具体地说,涉及一种消息发送、接收方法和装置。
【背景技术】
[0002]程序A与程序B进行异步通信时,目前通过消息队列服务(Message QueueService,MQ Server)来完成,但是当程序A向MQ Server发送消息失败时,或者B处理消息失败时,A就得不到B的响应消息,也就无法得到所需要的数据。主要表现为:
[0003]1、程序A发送消息失败,而消息未保存,业务需要回滚或者重新根据业务需求开发重试逻辑
[0004]2、程序B接收消息后处理失败,无法及时监控和重试,失败后无法自动处理或者需要重新开发重试逻辑。
[0005]3,MQ Server问题或网络问题造成消息丢失,程序A发送成功,程序B未收到消息。这种数据没有保存,无法自动处理,也很难被发现。

【发明内容】

[0006]有鉴于此,本发明实施例提供了一种消息发送、接收方法和装置,用以解决现有技术中消息发送和接收没有被记录而在消息发送或接收失败时难以恢复的技术问题。
[0007]为了解决上述技术问题,本发明公开了一种消息发送方法,包括:发送第一消息至目标接收器,并异步处理本地其他服务;检测所述第一消息是否被成功发送;响应于所述第一消息发送失败时,将所述第一消息记录在消息队列中。
[0008]为了解决上述技术问题,本发明还公开了一种消息接收方法,包括:接收来自发送器的第一消息;对所述第一消息进行处理,检测对所述第一消息的处理是否成功;响应于对所述第一消息处理失败时,将所述第一消息记录在消息队列中。
[0009]为了解决上述技术问题,本发明还公开了一种消息发送装置,包括:第一消息发送模块,用于发送第一消息至目标接收器,并异步处理本地其他服务;第一状态检测模块,用于检测所述第一消息是否被成功发送;第一消息记录模块,用于响应于所述第一消息发送失败时,将所述第一消息记录在消息队列中。
[0010]为了解决上述技术问题,本发明还公开了一种消息接收装置,包括:第二消息接收模块,用于接收来自发送器的第一消息;第二状态检测模块,用于对所述第一消息进行处理,检测对所述第一消息的处理是否成功;第二消息记录模块,用于响应于对所述第一消息处理失败时,将所述第一消息记录在消息队列中。
[0011]为了解决上述技术问题,本发明还公开了一种消息发送装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:发送第一消息至目标接收器,并异步处理本地其他服务;检测所述第一消息是否被成功发送;响应于所述第一消息发送失败时,将所述第一消息记录在消息队列中。
[0012]为了解决上述技术问题,本发明还公开了一种消息接收装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:接收来自发送器的第一消息;对所述第一消息进行处理,检测对所述第一消息的处理是否成功;响应于对所述第一消息处理失败时,将所述第一消息记录在消息队列中。
[0013]与现有技术相比,本发明实施例提供的消息发送、接收方法和装置,将消息发送和接收与具体业务剥离进行异步处理,并且实现了对失败消息的保存,能够记录发送或者处理失败的消息,避免因消息丢失或者业务数据中断而需要数据回滚。
【附图说明】
[0014]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0015]图1是本发明实施例中消息收发系统的架构示意图;
[0016]图2是本发明实施例提供的一种消息发送方法的流程图;
[0017]图3是本发明实施例提供的一种消息发送方法的流程图;
[0018]图4是本发明实施例提供的一种消息发送方法的流程图;
[0019]图5是本发明实施例提供的一种消息接收方法的流程图;
[0020]图6是本发明实施例提供的一种消息接收方法的流程图;
[0021 ]图7是本发明实施例提供的一种消息接收方法的流程图;
[0022]图8是本发明实施例的消息收发系统在视频转码系统中的应用示意图;
[0023]图9是本发明实施例提供的一种消息发送装置的框图;
[0024]图10是本发明实施例提供的一种消息接收装置的框图。
【具体实施方式】
[0025]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026]本发明实施例,将消息组件独立的集成于发送器和接收器,将消息发送和接收与具体业务剥离进行异步处理,并且实现了对失败消息的保存和重试,能够记录并重试发送或者处理失败的消息,避免因消息丢失或者业务数据中断而需要数据回滚。
[0027]图1是本发明实施例中消息收发系统的架构示意图,包括消息发送端10和消息接收端11,消息发送端10向消息接收端11发送请求消息,由消息接收端11根据业务逻辑对请求消息进行处理,将处理的结果数据保存在应答消息中返回给消息发送端10。在消息发送端10集成消息组件101,在消息接收端11集成消息组件111,分别做为消息发送端10和消息接收端11的消息收发器,用于发送和接收请求消息以及应答消息。
[0028]对消息发送端而言,本发明实施例提供的一种消息发送方法,如图2所示,该方法包括以下步骤S201-S203。
[0029]在步骤S201中,发送第一消息至目标接收器,并异步处理本地其他服务。
[0030]第一消息是发送至消息接收端的请求消息,用于向消息接收端请求对应的数据。消息组件与本地其他业务属于异步关系,并且本地其他服务的后续处理也不须依赖消息接收端返回的应答消息,因此将这类消息的请求和接收与其他业务做异步处理,以提高本地业务的处理效率。
[0031]消息接收端的消息组件即为该第一消息的目标接收器。
[0032]在步骤S202中,检测第一消息是否被成功发送。
[0033]由于网络传输条件出现问题或者消息发送端的自身故障,可能会导致第一消息的发送失败。发送器检测第一消息是否已成功发送。
[0034]在步骤S203中,响应于第一消息发送失败时,将第一消息记录在消息队列中。
[0035]这里的消息队列用于记录没有被成功发送的第一消息,可以按照时间顺序对记录的所有第一消息进行排序,从而将没有被成功发送的请求消息记录下来。由于本地其他服务的后续处理不须依赖对应的应答消息,因此不会对后续业务处理造成影响,但用户可以通过消息队列中记录的第一消息查询到哪些请求消息没有被成功发送。
[0036]在一个实施例中,如图3所示,该消息发送方法进一步包括以下步骤S204。
[0037]在步骤S204中,周期性的重试发送第一消息,直到第一消息发送成功。
[0038]在记录发送失败的第一消息的消息队列中预设重试策略,每隔预设时长(例如,30毫秒)对发送失败的第一消息进行重试,直到第一消息发送成功,将发送成功的第一消息从消息队列中删除。使发送失败的第一消息得到保存并且根据重试策略进行重试,由消息组件独立处理这些请求消息直到其发送成功,从而不需要通过业务回滚而再次发送一次新的请求消息。
[0039]在一个实施例中,如图4所示,该消息发送方法进一步包括以下步骤S205。
[0040]在步骤S205中,接收目标接收器返回的第二消息,第二消息包括处理第一消息而得到的结果数据。
[0041]第二消息是根据业务逻辑成功处理第一消息后的应答消息,来自于目标接收器,即消息接收端的消息组件。消息接收端根据业务逻辑处理请求消息得到结果数据后,向消息发送端返回应答信息。在消息发送端同样由消息组件来接收与请求消息对应的应答消息,将消息发送和接收都与具体业务剥离进行异步处理,又能保证每个请求消息都会被成功发送,避免丢失请求消息。
[0042]对消息接收端而言,本发明实施例提供的一种消息接收方法,如图5所示,该方法包括以下步骤S301-S303。
[0043]在步骤S301中,接收来自发送器的第一消息。
[0044]发送器即为消息发送端的消息组件,消息接收端的消息组件接收来自发送器的请求消息。
[0045]在步骤S302中,对第一消息进行处理,检测对第一消息的处理是否成功。
[0046]对接收到的第一消息根据业务逻辑进行处理,并检测是否每个第一消息都被成功处理。由于消息接收端本地的响应服务没有开启或者负载较高等原因,可能会导致有的请求消息处理失败。
[0047]在步骤S303中,响应于对所述第一消息处理失败时,将第一消息记录在消息队列中。
[0048]对于处理失败的第一消息,将其记录在一个消息队列中,而这里的消息队列用于记录处理失败的第一消息,防止第一消息因暂时处理失败而被丢弃,使消息接收端能够实时监控各个请求消息的处理情况并保存处理失败的第一消息,使用户通过该消息组件查询到哪些请求消息处理失败,及时采取将消息接收端相应的服务开启等应对措施。
[0049]在一个实施例中,如图6所示,该消息接收方法进一步包括以下步骤S304。
[0050]在步骤S304中,周期性的重试处理第一消息,直到第一消息处理成功。
[0051]在记录处理失败的第一消息的消息队列中预设重试策略,每隔预设时长(例如50毫秒)对处理失败的第一消息进行重试,直到其被处理成功,获得对应的结果数据。使处理失败的第一消息得到保存并且根据重试策略进行重试,由消息组件独立处理这些接收到的但暂时处理失败的请求消息直到其处理成功,不需要通过业务回滚而再重新接收一次新的请求消息。
[0052]在一个实施例中,如图7所示,该消息接收方法进一步包括以下步骤S305-S308。
[0053]在步骤S305中,发送第二消息至发送器,第二消息包括处理第一消息而得到的结果数据。
[0054]在步骤S306中,检测第二消息是否被成功发送;
[0055]在步骤S307中,用于响应于第二消息发送失败时,将第二消息记录在消息队列中。
[0056]在步骤S308中,将周期性的重试发送第二消息,直到第二消息发送成功。
[0057]消息接收端的消息组件在第一消息处理成功之后,开始向消息发送端返回包括结果数据的第二消息。同理,第二消息也会存在发送失败的可能,例如网络传输条件不佳或者消息发送端自身故障等因素,因此对第二消息的发送进行检测,将发送失败的第二消息记录在另一个消息队列中,这里的消息队列用于记录发送失败的第二消息,使发送失败的第二消息不会被丢弃,得到的结果数据也得以保存。
[0058]在记录发送失败的第二消息的消息队列中预设重试策略,每隔预设时长(例如30毫秒)对发送失败的第二消息进行重试,直到第二消息发送成功,将得到的结果数据成功的返回消息发送端,将发送成功的第二消息从消息队列中删除。
[0059]在消息接收端,消息组件独立的进行请求消息的接收、检测并重试处理失败的请求消息以及应答消息的发送,与具体业务剥离进行异步处理,保证每个请求消息都会被成功处理,避免丢失未得到处理请求消息,并且保证每个应答消息都能够成功返回消息发送端,使结果数据不会因应答消息发送失败而被丢弃。
[0060]上述消息收发的架构可以被应用到视频转码系统中,如图8所示,云存储生产平台40首先会调用云存储服务41来完成转码视频的上传和存储。存储成功之后,再调用云转码服务42进行对上传的视频进行转码。而在调用云转码服务42之前,生产平台40可以先调用多媒体信息服务43,以获取上传视频的多媒体信息,包括上传视频的时长、大小以及帧率等信息。但是否获取到上述多媒体信息并不会影响生产平台对云转码服务42的进一步调用。也就是说,生产品台40对于多媒体信息服务43的调用与生产品台40先调用云存储服务41再调用云转码服务42这一业务逻辑是异步进行的。因此,在生产平台40和多媒体信息服务43分别设置一消息组件做为消息收发器,使生产平台40向多媒体信息服务43请求上传视频的多媒体信息。
[0061]生产品台40通过消息组件做为发送器发送针对已上传视频的多媒体信息请求消息至多媒体信息服务43的消息组件,并针对已上传视频继续调用云转码服务42的流程进行异步控制。
[0062]发送器检测多媒体信息请求消息是否被成功发送,如果多媒体信息请求消息发送失败,将多媒体信息请求消息记录在一个消息队列中,并周期性的重试发送该多媒体信息请求消息,直到该多媒体信息请求消息发送成功。
[0063]多媒体信息服务43的消息组件做为该多媒体信息请求消息的目标接收器,接收该多媒体信息请求消息,检测多媒体信息服务43是否成功请求到上传视频的多媒体信息;如果请求上传视频的多媒体信息失败,将处理失败的多媒体信息请求消息记录在一个消息队列中,周期性的重试处理该多媒体信息请求消息,直到该多媒体信息请求消息处理成功,请求到上传视频的多媒体信息。
[0064]多媒体信息服务43的消息组件再发送应答消息至发送器,应答消息包括处理该多媒体信息请求消息而得到的上传视频的多媒体信息;检测应答消息是否被成功发送;如果应答消息发送失败,将发送失败的应答消息记录在另一个消息队列中,并周期性的重试发送该应答消息,直到该应答消息发送成功,将上传视频的多媒体信息发送至生产品台40。
[0065]将视频转码系统中可以异步处理的消息发送和接收从转码业务逻辑中独立出来,对消息发送和处理进行保存和重试可根据配置策略自动进行,确保多媒体信息请求消息不会因发送失败以及处理失败而被丢弃,应答消息也不会因发送失败而被丢弃,保证视频转码系统中的多媒体请求消息能够被及时的发送和处理。
[0066]以下是本发明的装置实施例,用于执行本发明的方法实施例。
[0067]图9是本发明实施例提供的一种消息发送装置,包括:
[0068]第一消息发送模块50,用于发送第一消息至目标接收器,并异步处理本地其他服务;
[0069]第一状态检测模块51,用于检测第一消息是否被成功发送;
[0070]第一消息记录模块52,用于响应于第一消息发送失败时,将第一消息记录在消息队列中。
[0071]在一个实施例中,该装置还包括:
[0072]第一重试发送模块,用于周期性的重试发送第一消息,直到第一消息发送成功。
[0073]在一个实施例中,该装置还包括:
[0074]第一消息接收模块,用于接收目标接收器返回的第二消息,第二消息包括处理第一消息而得到的结果数据。
[0075]图10是本发明实施例提供的一种消息接收装置,包括:
[0076]第二消息接收模块60,用于接收来自发送器的第一消息;
[0077]第二状态检测模块61,用于对第一消息进行处理,检测对第一消息的处理是否成功;
[0078]第二消息记录模块62,用于响应于对第一消息处理失败时,将第一消息记录在消息队列中。
[0079]在一个实施例中,该装置还包括:
[0080]重试处理模块,用于周期性的重试处理所述第一消息,直到所述第一消息处理成功。
[0081]在一个实施例中,该装置还包括:
[0082]第二消息发送模块,用于发送第二消息至发送器,第二消息包括处理第一消息而得到的结果数据;
[0083]第三状态检测模块,用于检测第二消息是否被成功发送;
[0084]第三消息记录模块,用于响应于第二消息发送失败时,将第二消息记录在消息队列中;
[0085]第二重试发送模块,用于周期性的重试发送第二消息,直到第二消息发送成功。
[0086]此外,本发明实施例中可以通过硬件处理器(hardware processor)来实现上述各个功能模块。
[0087]本发明实施例还提供了一种消息发送装置,包括:
[0088]处理器;
[0089]用于存储处理器可执行指令的存储器;
[0090]其中,所述处理器被配置为:
[0091 ]发送第一消息至目标接收器,并异步处理本地其他服务;
[0092]检测所述第一消息是否被成功发送;
[0093]响应于所述第一消息发送失败时,将所述第一消息记录在消息队列中。
[0094]在一个实施例中,所述处理器进一步被配置为:
[0095]周期性的重试发送所述第一消息,直到所述第一消息发送成功。
[0096]在一个实施例中,所述处理器进一步被配置为:
[0097]接收所述目标接收器返回的第二消息,所述第二消息包括处理所述第一消息而得到的结果数据。
[0098]本发明实施例还提供了一种消息接收装置,包括:
[0099]处理器;
[0100]用于存储处理器可执行指令的存储器;
[0101]其中,所述处理器被配置为:
[0102]接收来自发送器的第一消息;
[0103]对所述第一消息进行处理,检测对所述第一消息的处理是否成功;
[0104]响应于对所述第一消息处理失败时,将所述第一消息记录在消息队列中。
[0105]在一个实施例中,所述处理器进一步被配置为:
[0106]周期性的重试处理所述第一消息,直到所述第一消息处理成功。
[0107]在一个实施例中,所述处理器进一步被配置为:
[0108]发送第二消息至所述发送器,所述第二消息包括处理所述第一消息而得到的结果数据;
[0109]检测所述第二消息是否被成功发送;
[0110]响应于所述第二消息发送失败时,将所述第二消息记录在消息队列中。
[0111]在一个实施例中,所述处理器进一步被配置为:
[0112]周期性的重试发送所述第二消息,直到所述第二消息发送成功。
[0113]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0114]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0115]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种消息发送方法,其特征在于,包括: 发送第一消息至目标接收器,并异步处理本地其他服务; 检测所述第一消息是否被成功发送; 响应于所述第一消息发送失败时,将所述第一消息记录在消息队列中。2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 周期性的重试发送所述第一消息,直到所述第一消息发送成功。3.根据权利要求1所述的方法,其特征在于,所述方法还包括: 接收所述目标接收器返回的第二消息,所述第二消息包括处理所述第一消息而得到的结果数据。4.一种消息接收方法,其特征在于,包括: 接收来自发送器的第一消息; 对所述第一消息进行处理,检测对所述第一消息的处理是否成功; 响应于对所述第一消息处理失败时,将所述第一消息记录在消息队列中。5.根据权利要求4所述的方法,其特征在于,所述方法还包括: 周期性的重试处理所述第一消息,直到所述第一消息处理成功。6.根据权利要求4所述的方法,其特征在于,所述方法还包括: 发送第二消息至所述发送器,所述第二消息包括处理所述第一消息而得到的结果数据; 检测所述第二消息是否被成功发送; 响应于所述第二消息发送失败时,将所述第二消息记录在消息队列中。7.根据权利要求6所述的方法,其特征在于,所述方法还包括: 周期性的重试发送所述第二消息,直到所述第二消息发送成功。8.一种消息发送装置,其特征在于,包括: 第一消息发送模块,用于发送第一消息至目标接收器,并异步处理本地其他服务; 第一状态检测模块,用于检测所述第一消息是否被成功发送; 第一消息记录模块,用于响应于所述第一消息发送失败时,将所述第一消息记录在消息队列中。9.根据权利要求8所述的装置,其特征在于,所述装置还包括: 第一重试发送模块,用于周期性的重试发送所述第一消息,直到所述第一消息发送成功。10.根据权利要求8所述的装置,其特征在于,所述装置还包括: 第一消息接收模块,用于接收所述目标接收器返回的第二消息,所述第二消息包括处理所述第一消息而得到的结果数据。11.一种消息接收装置,其特征在于,包括: 第二消息接收模块,用于接收来自发送器的第一消息; 第二状态检测模块,用于对所述第一消息进行处理,检测对所述第一消息的处理是否成功; 第二消息记录模块,用于响应于对所述第一消息处理失败时,将所述第一消息记录在消息队列中。12.根据权利要求10所述的装置,其特征在于,所述装置还包括: 重试处理模块,用于周期性的重试处理所述第一消息,直到所述第一消息处理成功。13.根据权利要求10所述的装置,其特征在于,所述装置还包括: 第二消息发送模块,用于发送第二消息至所述发送器,所述第二消息包括处理所述第一消息而得到的结果数据; 第三状态检测模块,用于检测所述第二消息是否被成功发送; 第三消息记录模块,用于响应于所述第二消息发送失败时,将所述第二消息记录在消息队列中。14.根据权利要求13所述的装置,其特征在于,所述装置还包括: 第二重试发送模块,用于周期性的重试发送所述第二消息,直到所述第二消息发送成功。15.一种消息发送装置,其特征在于,包括: 处理器; 用于存储处理器可执行指令的存储器; 其中,所述处理器被配置为: 发送第一消息至目标接收器,并异步处理本地其他服务; 检测所述第一消息是否被成功发送; 响应于所述第一消息发送失败时,将所述第一消息记录在消息队列中。16.一种消息接收装置,其特征在于,包括: 处理器; 用于存储处理器可执行指令的存储器; 其中,所述处理器被配置为: 接收来自发送器的第一消息; 对所述第一消息进行处理,检测对所述第一消息的处理是否成功; 响应于对所述第一消息处理失败时,将所述第一消息记录在消息队列中。
【文档编号】H04L12/58GK105897549SQ201510924451
【公开日】2016年8月24日
【申请日】2015年12月14日
【发明人】刘永华, 王孝庆
【申请人】乐视云计算有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1