一种存储消息的方法和装置与一种读取消息的方法和装置制造方法及图纸

技术编号:20763318 阅读:30 留言:0更新日期:2019-04-03 14:08
本申请提供一种存储消息的方法和装置以及一种读取消息的方法和装置。其中,所述一种存储消息的方法,包括:获取存储指定的待存储消息的请求;根据所述请求所对应的待存储消息的相关信息,生成所述待存储消息的含有第一删除标志的元信息数据和含有第二删除标志的消息实体数据;将所述待存储消息的元信息数据以及相应的待存储消息的消息实体数据原子地存储到存储介质。本申请能够起到简化消息的管理,提高管理消息的灵活性的作用。

【技术实现步骤摘要】
一种存储消息的方法和装置与一种读取消息的方法和装置
本申请涉及一种管理消息的方法。具体涉及一种存储消息的方法和装置以及一种读取消息的方法和装置。
技术介绍
本申请所涉及的消息是指业务系统或业务系统的不同功能模块间传递信息的载体。当业务系统或业务系统的功能模块需要通知其他的业务系统或系统的其他功能模块执行后续的操作时,会产生必要的信息,所述信息被保存到相应的消息组,以便其他业务系统或系统的其他功能模块从所述消息组读取所述必要的信息,执行后续的操作。消息管理系统管理消息的存储,读取和删除,可以被当作消息系统的的服务端,产生消息的业务系统或业务系统的功能模块是消息的生产者,需要获得消息的内容和相关数据并能够删除消息的业务系统或业务系统的功能模块是消息的消费者,也可以被当作消息系统的客户端。可靠消息系统管理消息的读取状态来保证消息至少读取成功一次。在消息系统服务端管理消息读取状态,需要保证读取者来读取消息时总是返回当前消息组中最先进入的消息。尤其是需要处理那些客户端没有读取成功的消息,保证这些消息可以被再次读取,最终做到所有消息至少被读取一次。实现该方式的已有方案可以大致分为两类:第一类,在消息的元数据信息中增加一个属性来记录消息的是否已经被成功读取。在消息被发送到消息系统时将消息的读取状态设置为“未读取”,在用户读取获取消息后将消息状态置为“正在读取”,用户成功读取后主动将消息的状态置为“已读取”。每次用户读取消息时,系统都是从最早进入且未被读取的消息开始取出其后的消息,过滤掉其中的“已读取”和“正在读取”的消息,返回“未读取”消息给用户。用户如果未能在约定的时间内读取成功,系统会把消息从“正在读取”状态改为“未读取”状态,使消息可以被再次读取,来保证消息至少读取成功一次。第一类在消息系统服务端管理消息的读取状态的技术方案需要修改消息的属性。在多个线程并发读取消息时,并发更改消息的状态会导致随机写磁盘,严重影响系统的性能。另外,维护最早进入且未被读取的消息也较为复杂。而且,每次给用户返回消息,都需要过滤“正在读取”和“读取成功”的消息。第二类,将一个组分成两部分:“待读取的消息集合”和“正在读取的消息集合”。消息发送至系统后进入“待读取的消息集合”。用户获取消息后,消息出“待读取的消息集合”,进入“正在读取的消息集合”。读取成功后,用户主动将消息从“待读取的消息集合”删除。否则,在超出约定的超时时间后,系统会把消息从“正在读取的消息集合”移至“待读取的消息集合”,使消息可以被再次读取,来保证消息至少读取成功一次。第二类在消息系统服务端管理消息的读取状态的技术方案需要维护两个份消息集合,而且消息的状态改变需要修改两个消息集合。尤其在消息读取失败后,系统需要把该消息再次加入“未读取的消息集合”来保证至少读取成功一次。因为需要保证消息先进先出,未能成功读取的消息需要被“插入”到“未读取的消息集合”中特定的位置。如果使用随机写的方式来实现“插入”会产生严重的性能问题。如果使用追加写的方式来实现逻辑上的“插入”,往往会因为物理上的数据归并不及时导致在读取消息的时候需要过滤大量逻辑上已经删除的消息,同时也需要特别处理大量消息过期的情况,增加了实现的复杂性。可见,上述两类目前管理消息的方式具有管理消息复杂,成本较高的问题。
技术实现思路
本申请提供一种存储消息的方法。本申请同时提供一种存储消息的装置,以及一种读取消息的方法和装置。本申请提供的一种存储消息的方法,包括:获取存储指定的待存储消息的请求;根据所述请求所对应的待存储消息的相关信息,生成所述待存储消息的含有第一删除标志的元信息数据和含有第二删除标志的消息实体数据;将所述待存储消息的元信息数据以及相应的待存储消息的消息实体数据原子地存储到存储介质。可选的,根据所述请求所对应的待存储消息的相关信息,生成所述待存储消息的含有第一删除标志的元信息数据和含有第二删除标志消息实体数据包括:为所述待存储消息生成消息标识;根据所述请求所对应的待存储消息的相关信息,生成包括元信息键和元信息删除标志的所述待存储消息的元信息数据;根据所述请求所对应的待存储消息的相关信息,生成包括消息实体键,消息实体值和消息实体删除标志的所述待存储消息的消息实体数据;其中,所述元信息删除标志为所述第一删除标志,所述消息实体删除标志为所述消息实体删除标志。可选的,所述根据所述请求所对应的待存储消息的相关信息,生成包括元信息键和元信息删除标志的所述待存储消息的元信息数据包括:将当前时间作为生成元信息数据的时间,生成包括所述待存储消息所属的消息组的标识,生成元信息数据的时间,所述消息标识和元信息标识的所述待存储消息的元信息键;生成值为假的所述待存储消息的元信息删除标志。可选的,所述根据所述请求所对应的待存储消息的相关信息,生成包括消息实体键,消息实体值和消息实体删除标志的所述待存储消息的消息实体数据包括:生成包括所述待存储消息所属的消息组的标识,所述消息标识和消息实体标识的所述待存储消息的消息实体键;生成包括所述待存储消息的内容的所述待存储消息的消息实体值;生成值为假的所述待存储消息的消息实体删除标志。可选的,所述消息标识为递增编号的数字。此外,本申请还提供一种读取消息的方法,包括以下步骤:获取请求者读取指定消息组的消息的请求;根据缓存中所述请求所对应的消息组的第一个消息的元信息数据,生成相应的删除消息的元信息数据和隐藏消息的元信息数据;将所述删除消息的元信息数据和所述隐藏消息的元信息数据原子地存储到存储介质;将所述请求所对应的消息组的第一个消息的相关数据输出;其中,所述第一个消息包括生成元信息数据的时间最早的消息。可选的,所述根据所述请求所对应的消息组的第一个消息的元信息数据,生成相应的删除消息的元信息数据和隐藏消息的元信息数据包括:根据所述第一个消息的元信息数据生成删除消息的元信息数据;根据所述第一个消息和其所对应的超时时长生成隐藏消息的元信息数据;可选的,所述根据所述第一个消息的元信息数据生成删除消息的元信息数据包括:将所述第一个消息的的元信息键作为删除消息的元信息键,设置所述删除消息的元信息删除标志为真,生成删除消息的元信息数据。可选的,所述根据所述第一个消息和其所对应的超时时长生成隐藏消息的元信息数据包括:将所述第一个消息的元信息键的生成元信息数据的时间加上所述消息所对应的超时时长后得到的元信息键作为隐藏消息的元信息键,设置隐藏消息的元信息删除标志为假,生成隐藏消息的元信息数据。可选的,所述将所述请求所对应的消息组的第一个消息的相关数据输出包括:根据所述第一个消息的元信息数据,将相应的第一个消息的内容读入缓存;将缓存中所述消息的内容及所述消息的属性数据输出。可选的,所述将所述请求所对应的消息组的第一个消息的相关数据输出的步骤后还包括:获取删除所读取的所述消息的请求;当所述请求所对应的消息的元信息键的生成元信息数据与当前时间的差值小于所述消息的超时时长时,将所述隐藏消息的元信息键作为删除隐藏消息的元信息键,设置所述删除隐藏消息的元信息删除标志为真,生成删除隐藏消息的元信息数据;存储所述删除隐藏消息的元信息数据。可选的,所述根据缓存中所述请求所对应的消息组的第一个消息的元信息数据,生成相应的删本文档来自技高网
...

【技术保护点】
1.一种存储消息的方法,其特征在于,包括:获取存储指定的待存储消息的请求;根据所述请求所对应的待存储消息的相关信息,生成所述待存储消息的含有第一删除标志的元信息数据和含有第二删除标志的消息实体数据;将所述待存储消息的元信息数据以及相应的待存储消息的消息实体数据原子地存储到存储介质。

【技术特征摘要】
1.一种存储消息的方法,其特征在于,包括:获取存储指定的待存储消息的请求;根据所述请求所对应的待存储消息的相关信息,生成所述待存储消息的含有第一删除标志的元信息数据和含有第二删除标志的消息实体数据;将所述待存储消息的元信息数据以及相应的待存储消息的消息实体数据原子地存储到存储介质。2.根据权利要求1所述的存储消息的方法,其特征在于,根据所述请求所对应的待存储消息的相关信息,生成所述待存储消息的含有第一删除标志的元信息数据和含有第二删除标志消息实体数据包括:为所述待存储消息生成消息标识;根据所述请求所对应的待存储消息的相关信息,生成包括元信息键和元信息删除标志的所述待存储消息的元信息数据;根据所述请求所对应的待存储消息的相关信息,生成包括消息实体键,消息实体值和消息实体删除标志的所述待存储消息的消息实体数据;其中,所述元信息删除标志为所述第一删除标志,所述消息实体删除标志为所述消息实体删除标志。3.根据权利要求2所述的存储消息的方法,其特征在于,所述根据所述请求所对应的待存储消息的相关信息,生成包括元信息键和元信息删除标志的所述待存储消息的元信息数据包括:将当前时间作为生成元信息数据的时间,生成包括所述待存储消息所属的消息组的标识,生成元信息数据的时间,所述消息标识和元信息标识的所述待存储消息的元信息键;生成值为假的所述待存储消息的元信息删除标志。4.根据权利要求2所述的存储消息的方法,其特征在于,所述根据所述请求所对应的待存储消息的相关信息,生成包括消息实体键,消息实体值和消息实体删除标志的所述待存储消息的消息实体数据包括:生成包括所述待存储消息所属的消息组的标识,所述消息标识和消息实体标识的所述待存储消息的消息实体键;生成包括所述待存储消息的内容的所述待存储消息的消息实体值;生成值为假的所述待存储消息的消息实体删除标志。5.根据权利要求2所述的存储消息的方法,其特征在于,所述消息标识为递增编号的数字。6.一种读取消息的方法,其特征在于,包括以下步骤:获取请求者读取指定消息组的消息的请求;根据缓存中所述请求所对应的消息组的第一个消息的元信息数据,生成相应的删除消息的元信息数据和隐藏消息的元信息数据;将所述删除消息的元信息数据和所述隐藏消息的元信息数据原子地存储到存储介质;将所述请求所对应的消息组的第一个消息的相关数据输出;其中,所述第一个消息包括生成元信息数据的时间最早的消息。7.根据权利要求6所述的读取消息的方法,其特征在于,所述根据所述请求所对应的消息组的第一个消息的元信息数据,生成相应的删除消息的元信息数据和隐藏消息的元信息数据包括:根据所述第一个消息的元信息数据生成删除消息的元信息数据;根据所述第一个消息和其所对应的超时时长生成隐藏消息的元信息数据。8.根据权利要求7所述的读取消息的方法,其特征在于,所述根据所述第一个消息的元信息数据生成删除消息的元信息数据包括:将所述第一个消息的的元信息键作为删除消息的元信息键,设置所述删除消息的元信息删除标志为真,生成删除消息的元信息数据。9.根据权利要求7所述的读取消息的方法,其特征在于,所述根据所述第一个消息和其所对应的超时时长生成隐藏消息的元信息数据包括:将所述第一个消息的元信息键的生成元信息数据的时间加上所述消息所对应的超时时长后得到的元信息键作为隐藏消息的元信息键,设置隐藏消息的元信息删除标志为假,生成隐藏消息的元信息数据。10.根据权利要求6所述的读取消息的方法,其特征在于,所述将所述请求所对应的消息组的第一个消息的相关数据输出包括:根据所述第一个消息的元信息数据,将相应的第一个消息的内容读入缓存;将缓存中所述消息的内容及所述消息的属性数据输出。11.根据权利要求6所述的读取消息的方法,其特征在于,所述将所述请求所对应的消息组的第一个消息的相关数据输出的步骤后还包括:获取删除所读取的所述消息的请求;当所述请求所对应的消息的元信息键的生成元信息数据与当前时间的差值小于所述消息的超时时长时,将所述隐藏消息的元信息键作为删除隐藏消息的元信息键,设置所述删除隐藏消息的元信息删除标志为真,生成删除隐藏消息的元信息数据;存储所述删除隐藏消息的元信息数据。12.根据权利要求6所述的读取消息的方法,其特征在于,所述根据缓存中所述请求所对应的消息组的第...

【专利技术属性】
技术研发人员:陈建锋吴结生陈舟锋
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1