System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及数据处理,尤其涉及一种消息的分级存储方法及装置、电子设备和存储介质。
技术介绍
1、消息队列(message queue),是分布式系统中重要的组件,主要解决了耦合、异步处理、流量削锋等问题。现代消息队列的核心是消息收发机制,基于不同的消息队列协议,多种消息队列架构迥异,rcoketmq、kafka等是订阅/发布模式,也即通过主题(topic)完成消息流转,而advanced message queuing protocol(amqp)协议则采用路由绑定模式,主流的支持amqp协议的消息队列是开源rabbitmq,在rabbitmq收发流程中,服务器接收到消息并将其持久化存储层(ets和mnesia等内置存储组件中),同时生成位置索引,并将索引信息分发到对应的队列中。消费消息时,先读取索引消息,在依据索引中的位置消费原始消息内容。这种方式可以减少消息复制分发、进程间通信的带宽和时间,同时实际复制分发的是索引而不是原始消息体,开可以减少空间占用。
2、上述流程对所有消息的进行通用化处理,多数场景都是小消息的频繁收发,导致实际使用场景中性能不佳。
技术实现思路
1、本公开提供了一种消息的分级存储方法、装置、电子设备和存储介质。其主要目的在于解决相关技术中对所有消息的进行通用化处理,多数场景都是小消息的频繁收发,导致实际使用场景中性能不佳的问题。
2、根据本公开的第一方面,提供了一种消息的分级存储方法,其中,包括:
3、在接收到待传输消息后,
4、在确定所述消息体大小小于预设阈值的情况下,将所述待传输消息分发至队列对应的存储位置;
5、在确定所述消息体大小大于或者等于所述预设阈值的情况下,将所述待传输消息分发至磁盘中对应的地址索引进行存储,并将所述地址索引分发至队列对应的存储位置,以便消费者在获取所述队列中的所述地址索引后,从所述磁盘中获取对应的待传输消息。
6、在一些实施例中,若启动消息确认机制,在将所述待传输消息分发至磁盘中对应的地址索引进行存储之后,所述方法还包括:
7、在不存在所述消费者的情况下,将所述待传输消息分发至服务器中对应的地址空间进行存储,并向所述生产者发送确认消息。
8、在一些实施例中,若启动消息确认机制,在将所述待传输消息分发至磁盘中对应的地址索引进行存储之后,所述方法还包括:
9、在存在所述消费者的情况下,将所述待传输消息发送给服务器,以便所述服务器将所述待传输消息发送消费者;
10、若接收所述服务器发送的所述消费者发送的确认消息,则继续发送下一个待传输消息;
11、若未接收所述服务器发送的所述消费者发送的确认消息,则重新发送所述待传输消息。
12、在一些实施例中,在将所述待传输消息发送给服务器之前,所述方法还包括:
13、确定所述消费者的数量,并确定所述消费者的数量是否超过预设数量阈值;
14、在确定所述消费者的数量超过所述预设数量阈值的情况下,将断开与所述消费者连接,并将所述待传输消息分发至服务器中对应的地址空间进行存储,并向所述生产者发送确认消息;
15、所述将所述待传输消息发送给服务器包括:
16、在确定所述消费者的数量未超过所述预设数量阈值的情况下,将所述待传输消息发送给所述服务器。
17、在一些实施例中,若启动消息确认机制,在将所述待传输消息分发至队列对应的存储位置之后,所述方法还包括:
18、向所述消费者发送确认消息;
19、若接收到所述消费者对所述确认消息的响应信息,则继续发送下一个待传输消息;若未接收到所述消费者对所述确认消息的响应信息,则重新发送所述待
20、传输消息。
21、根据本公开的第二方面,提供了一种消息的分级存储装置,包括:
22、第一确定单元,用于在接收到待传输消息后,确定消息体大小;
23、第一存储单元,用于在确定所述消息体大小小于预设阈值的情况下,将所述待传输消息分发至队列对应的存储位置;
24、第二存储单元,用于在确定所述消息体大小大于或者等于所述预设阈值的情况下,将所述待传输消息分发至磁盘中对应的地址索引进行存储;
25、第三存储单元,用于将所述地址索引分发至队列对应的存储位置,以便消费者在获取所述队列中的所述地址索引后,从所述磁盘中获取对应的待传输消息。
26、在一些实施例中,若启动消息确认机制,所述装置还包括:
27、分发单元,用于所述第二存储单元在将所述待传输消息分发至磁盘中对应的地址索引进行存储之后,在不存在所述消费者的情况下,将所述待传输消息分发至服务器中对应的地址空间进行存储;
28、第一发送单元,用于向所述生产者发送确认消息。
29、在一些实施例中,若启动消息确认机制,所述装置还包括:
30、第二发送单元,用于在所述第二存储单元将所述待传输消息分发至磁盘中对应的地址索引进行存储之后,在存在所述消费者的情况下,将所述待传输消息发送给服务器,以便所述服务器将所述待传输消息发送消费者;
31、第一处理单元,用于若接收所述服务器发送的所述消费者发送的确认消息,则继续发送下一个待传输消息;
32、第二处理单元,用于若未接收所述服务器发送的所述消费者发送的确认消息,则重新发送所述待传输消息。
33、在一些实施例中,所述装置还包括:
34、第二确定单元,用于在所述第二发送单元将所述待传输消息发送给服务器之前,确定所述消费者的数量,并确定所述消费者的数量是否超过预设数量阈值;
35、断开单元,用于在确定所述消费者的数量超过所述预设数量阈值的情况下,将断开与所述消费者连接;
36、第三处理单元,用于将所述待传输消息分发至服务器中对应的地址空间进行存储,并向所述生产者发送确认消息;
37、所述第二发送单元,还用于在确定所述消费者的数量未超过所述预设数量阈值的情况下,将所述待传输消息发送给所述服务器。
38、在一些实施例中,所述装置还包括:
39、第三发送单元,用于若启动消息确认机制,在第三存储单元将所述待传输消息分发至队列对应的存储位置之后,向所述消费者发送确认消息;
40、第四处理单元,用于若接收到所述消费者对所述确认消息的响应信息,则继续发送下一个待传输消息;
41、第五处理单元,用于若未接收到所述消费者对所述确认消息的响应信息,则重新发送所述待传输消息。
42、根据本公开的第三方面,提供了一种电子设备,包括:
43、至少一个处理器;以及
44、与所述至少一个处理器通信连接的存储器;其中,
45、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理本文档来自技高网...
【技术保护点】
1.一种消息的分级存储方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,若启动消息确认机制,在将所述待传输消息分发至磁盘中对应的地址索引进行存储之后,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,若启动消息确认机制,在将所述待传输消息分发至磁盘中对应的地址索引进行存储之后,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,在将所述待传输消息发送给服务器之前,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,若启动消息确认机制,在将所述待传输消息分发至队列对应的存储位置之后,所述方法还包括:
6.一种消息的分级存储装置,其特征在于,包括:
7.根据权利要求6所述的装置,其特征在于,若启动消息确认机制,所述装置还包括:
8.一种电子设备,其特征在于,包括:
9.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-5中任一项所述的方法。
10.一种计算机程序产品,其特征在
...【技术特征摘要】
1.一种消息的分级存储方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,若启动消息确认机制,在将所述待传输消息分发至磁盘中对应的地址索引进行存储之后,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,若启动消息确认机制,在将所述待传输消息分发至磁盘中对应的地址索引进行存储之后,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,在将所述待传输消息发送给服务器之前,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,若启动消息确认机制,在将所述待传输...
【专利技术属性】
技术研发人员:陈国瑾,
申请(专利权)人:中移苏州软件技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。