一种消息处理方法和设备与流程

文档序号:11154192阅读:482来源:国知局
一种消息处理方法和设备与制造工艺

本申请实施例涉及通信技术领域,特别涉及一种消息处理方法。本申请实施例同时还涉及一种消息处理设备。



背景技术:

目前消息构造方式有两种,方式一是对消息进行持久化构造,方式二则是对消息进行非持久化构造。

其中持久化消息为可靠的传输模式,在提供者关闭、失败或者异常的场景下能确保消息不会被丢弃或丢失,会缓存对应的消息;但持久化的构造方式存在资源的浪费,在某中情况下针对特定的不需要缓存或者说可容忍部分消息丢失的情况下,该种模式显现出资源浪费,效率较低的缺陷;而非持久化构造的方式不能保证消息的可靠性,在订阅者不活动或者异常场景下即时持有的消息会被丢弃,不能确保可靠性,但是资源占用少,效率相对高。

针对上述两种情况,现有技术中,在对消息进行处理时,要不就是将所有消息进行持久化处理,要不就对所有消息进行非持久化处理,导致无法很好的适应需要,造成资源的浪费或者导致可靠性不足。



技术实现要素:

针对现有技术中的缺陷,本发明提出了一种消息处理方法,用以根据可靠性要求来选择对消息的处理方式,满足了实际的需要,克服现有技术中的缺陷,该包括:

获取待发送的消息;

对所述待发送的各消息进行可靠性评估,并根据可靠性评估结果为待发 送的各消息设置标识,生成包含标识与可靠性评估结果的对应关系,以及基于所述对应关系生成资源文件;

当需要发送所述消息时,基于所述资源文件与所述消息进行匹配,判断是否需要进行持久化处理;

若判断结果为是,则对所述消息进行持久化处理;

若判断结果为否,则对所述消进行非持久化处理。

优选的,所述标识具体为消息识别信息;

所述根据可靠性评估结果为待发送的各消息设置标识,具体包括:

针对每个待发送的消息,重载所述消息的消息头字段,并在所述消息中加入消息识别信息,用以标识所述消息。

优选的,所述对应关系中的可靠性评估结果是可以修改的,当对消息的可靠性评估结果变更时,对应的对应关系相应的修改为变更后的可靠性评估结果与标识的对应关系。

优选的,当发送情况异常时,判断待发送的消息队列中是否存在进行了持久化处理的消息;

若判断结果为是,则将所述进行了持久化处理的消息进行缓存,以便发送情况正常时再次进行发送。

本发明还提出了一种消息处理设备,包括:

获取模块,用于获取待发送的消息;

评估模块,用于对所述待发送的各消息进行可靠性评估,并根据可靠性评估结果为待发送的各消息设置标识,生成包含标识与可靠性评估结果的对应关系,以及基于所述对应关系生成资源文件;

判断模块,用于当需要发送所述消息时,基于所述资源文件与所述消息进行匹配,判断是否需要进行持久化处理;

处理模块,用于当判断结果为是时,对所述消息进行持久化处理;以及当判断结果为否时,对所述消进行非持久化处理。

优选的,所述标识具体为消息识别信息;

所述评估模块根据可靠性评估结果为待发送的各消息设置标识,具体包括:

针对每个待发送的消息,重载所述消息的消息头字段,并在所述消息中加入消息识别信息,用以标识所述消息。

优选的,所述对应关系中的可靠性评估结果是可以修改的,当对消息的可靠性评估结果变更时,对应的对应关系相应的修改为变更后的可靠性评估结果与标识的对应关系。

优选的,该设备还包括:

缓存模块,用于当发送情况异常时,判断待发送的消息队列中是否存在进行了持久化处理的消息;

若判断结果为是,则将所述进行了持久化处理的消息进行缓存,以便发送情况正常时再次进行发送。

与现有技术相比,本发明通过获取待发送的消息;对所述待发送的各消息进行可靠性评估,并根据可靠性评估结果为待发送的各消息设置标识,生成包含标识与可靠性评估结果的对应关系,以及基于所述对应关系生成资源文件;后续当需要发送消息时,基于资源文件与所述消息进行匹配,判断是否需要进行持久化处理;若判断结果为是,则对所述消息进行持久化处理;若判断结果为否,则对所述消进行非持久化处理;以此根据匹配结果来执行相应的操作,实现了根据需要来确定对消息是否进行持久化的处理,优化权衡系统开销和确保消息可靠性两个方面,使二者达到最优配置。

附图说明

图1为本发明实施例提出的一种消息处理方法的流程示意图;

图2为本发明实施例提出的一种JIM消息的示意图;

图3为本发明实施例提出的一种消息头部分的示意图;

图4为本发明实施例提出的一种消息属性部分的示意图;

图5为本发明实施例提出的一种消息处理设备的结构示意图;

具体实施方式

如背景技术所述,本发明提出了一种消息处理方法,如图1所示,包括以下步骤:

步骤101、获取待发送的消息;

具体的,待发送的消息可以是JIM(Java Message Service,Java消息服务)消息,当然也可以是其他的消息。

步骤102、对所述待发送的各消息进行可靠性评估,并根据可靠性评估结果为待发送的各消息设置标识,生成包含标识与可靠性评估结果的对应关系,以及基于所述对应关系生成资源文件;

具体的,针对系统中的各待发送的消息,都会进行可靠性评估,以此来评述各待发送的消息需要的可靠性,也即是否需要进行持久化的评估,当可靠性评估为需要进行持久化时,为该消息设置一个标识,例如为0,用以表示该消息后续需要进行可持久化处理,而若是不需要,为该消息设置另一个标识,例如为1,表示该消息后续不需要进行可持久化处理,也即进行非持久化处理,并生成标识与可靠性评估结果的对应关系,后续基于该对应关系生成资源文件,在该资源文件中保存有生成的标识与可靠性评估结果的对应关系。

在一个具体的实施例中,标识可以为消息识别信息;在此情况下,根据可靠性评估结果为待发送的各消息设置标识,具体包括:

针对每个待发送的消息,重载所述消息的消息头字段,并在所述消息中 加入消息识别信息,用以标识所述消息。

具体的,以JIM消息为例来进行说明,JIM消息包含三个部分,消息头、消息属性、消息体,其结构如图2所示,其中消息头字段用来提供消息在发送接收时的路由信息和类型以及识别消息的必要数据,一个系统中的消息必须支持一套相同的头字段规范;消息头部分如图3所示,各字段的详细含义参照JMS规范,其中JMS支持为消息增加可选头信息的机制,而消息属性部分为消息头字段的扩展部分,提供一种内建的方法用于给消息添加可选的信息;具体的消息属性部分结构如图4所示,消息体部分为消息实际荷载的特定信息,其中JMS消息体支持5中格式,具体为:

(1)、SreeamMwssage顺序地填充和读取的Java primitive流

(2)、MapMessage名字(String)和键值(Java primitive)对形式

(3)、TextMessage java.lang.String对象

(4)、ObjectMessage可序列化的Java对象

(5)、BytesMessage消息体部分为不间断的字节流

具体添加消息识别信息的方式为通过重载消息头字段,加入相应的消息识别信息来标识消息的属性,针对需要缓存及恢复的消息选择进行持久化的处理,也即创建持久化的消息,以确保订阅者不活动时该消息会被缓存起来或者在会话连接建立失败或发送失败时将其缓存在本地的缓存系统中,待连接恢复后重新推送至发送队列进行重发,确保消息的可靠性;针对可靠性要求不高的消息通过识别信息自动创建非持久化的消息,从而提高资源利用率,提升效率,可靠性无强制要求的消息在异常场景下不缓存,即时丢弃,减少环境资源浪费,提升整体效率;

此外,所述对应关系中的可靠性评估结果是可以修改的,当对消息的可靠性评估结果变更时,对应的对应关系相应的修改为变更后的可靠性评估结果与标识的对应关系;以此不需要每次都对消息进行变动,只需要更改资源 文件中的对应关系即可完成关于可靠性要求的变更。

步骤103、当需要发送所述消息时,基于资源文件与消息进行匹配,判断是否需要进行持久化处理;

具体的,以上述例子来进行说明,由于资源文件中存在标识与可靠性评估结果的对应关系,而消息中预设设置有标识,因此可以进行匹配,若消息匹配的结果为需要进行持久化处理,例如标识为0,则执行步骤103,而多匹配的结果为不需要进行持久化处理,例如标识为1,则执行步骤104。

步骤104、若判断结果为是,则对所述消息进行持久化处理。

步骤105、若判断结果为否,则对所述消进行非持久化处理。

具体的,在对消息进行持久化处理以及非持久化处理之后,会对应的生成持久化的消息和非持久化的消息,需要将生成的消息发送出去,具体的,是将生成的消息放置的消息发送队列中进行发送,而具体的发送过程会受到其他因素,例如网络环境等的影响,在此情况下,当发送情况异常时,判断待发送的消息队列中是否存在进行了持久化处理的消息;若判断结果为是,则将所述进行了持久化处理的消息进行缓存,以便发送情况正常时再次进行发送。以此,针对持久化处理的消息有两重保护,最大可能保障了在异常场景下的消息不被丢弃。

为了对本发明进行进一步的说明,本发明实施例还公开了一种消息处理设备,如图5,包括:

获取模块501,用于获取待发送的消息;

评估模块502,用于对所述待发送的各消息进行可靠性评估,并根据可靠性评估结果为待发送的各消息设置标识,生成包含标识与可靠性评估结果的对应关系,以及基于所述对应关系生成资源文件;

判断模块503,用于当需要发送所述消息时,基于所述资源文件与所述消 息进行匹配,判断是否需要进行持久化处理;

处理模块504,用于当判断结果为是时,对所述消息进行持久化处理;以及当判断结果为否时,对所述消进行非持久化处理。

所述标识具体为消息识别信息;

所述评估模块根据可靠性评估结果为待发送的各消息设置标识,具体包括:

针对每个待发送的消息,重载所述消息的消息头字段,并在所述消息中加入消息识别信息,用以标识所述消息。

所述对应关系中的可靠性评估结果是可以修改的,当对消息的可靠性评估结果变更时,对应的对应关系相应的修改为变更后的可靠性评估结果与标识的对应关系。

具体的,该设备还包括:

缓存模块,用于当发送情况异常时,判断待发送的消息队列中是否存在进行了持久化处理的消息;

若判断结果为是,则将所述进行了持久化处理的消息进行缓存,以便发送情况正常时再次进行发送。

本发明通过获取待发送的消息;对所述待发送的各消息进行可靠性评估,并根据可靠性评估结果为待发送的各消息设置标识,生成包含标识与可靠性评估结果的对应关系,以及基于所述对应关系生成资源文件;后续当需要发送消息时,基于资源文件与所述消息进行匹配,判断是否需要进行持久化处理;若判断结果为是,则对所述消息进行持久化处理;若判断结果为否,则对所述消进行非持久化处理;以此根据匹配结果来执行相应的操作,实现了根据需要来确定对消息是否进行持久化的处理,优化权衡系统开销和确保消息可靠性两个方面,使二者达到最优配置。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本申请序号仅仅为了描述,不代表实施场景的优劣。

以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1