消息续传方法和装置的制造方法_4

文档序号:8365408阅读:来源:国知局
的操作。
[0143]优选地,消息接收端列表包括索引列表和数组列表;所述索引列表中包含多个索引块,所述数组列表中包含数组块;
[0144]所述订阅请求单元将消息订阅请求携带的消息标识、消息接收端的标识和状态存储至消息接收端列表中包括:
[0145]依据消息订阅请求携带的消息标识,识别索引列表中是否存在已记录了该消息标识的索引块,如果是,从数组列表的首个数组块开始顺次遍历数组列表,将在数组列表中最先遍历到的空闲数组块的地址记录至该存在的索引块,如果否,从数组列表的首个数组块开始顺次遍历数组列表,将在数组列表中最先遍历到的空闲数组块的地址与该消息标识一起记录至索引列表中的空闲索引块;
[0146]在数组列表中最先遍历到的空闲数组块内记录该消息请求携带的消息接收端的标识和状态。
[0147]优选地,如图7所示,所述装置进一步包括:
[0148]检测单元,用于检测已发送消息订阅请求的每一消息接收端的状态,当检测到消息接收端的状态与消息接收端列表记录的该消息接收端的状态不一致,用检测到的该消息接收端的状态更新消息接收端列表记录的该消息接收端的状态。
[0149]优选地,所述第一处理单元从消息接收端列表中选取消息标识、且状态为正常的消息接收端的标识包括:
[0150]识别索引列表中每一索引块记录的消息标识和数组块地址;
[0151]针对识别出的每一数组块地址,从数组列表中找到该数组块地址记录的消息接收端的状态,如果该状态为正常,则选取该数组块地址记录的消息接收端的标识。
[0152]优选地,所述第三处理单元将该序列号作为向消息接收端发送的消息的序列号记录至消息接收端列表包括:
[0153]在数组列表中找到记录了该消息接收端标识的数组块;
[0154]在找到的数组块内记录该序列号。
[0155]优选地,所述续传单元依据接收的序列号和消息接收端列表记录的向该消息接收端的标识发送的序列号续传对应的消息至该消息接收端包括:
[0156]从数组列表中找到记录了该消息接收端标识的数组块;
[0157]比较接收的序列号和该找到的数组块记录的最大序列号,
[0158]如果前者小于后者,将分配了处于所述最大序列号与接收的序列号之间的序列号的消息发送给该消息接收端。
[0159]如果前者大于后者,识别该找到的数据块在数组列表中的地址,从索引列表中找到记录了该地址的索引块,以及识别该找到的索引块记录的消息标识,从消息列表中找到对应该消息标识的消息分配的序列号,选取最大的序列号,将分配了处于该选取的最大序列号与接收的序列号之间的序列号的消息发送给该消息接收端。
[0160]至此,完成图7所示的装置描述。
[0161]由以上技术方案可以看出,本发明中,中转服务器仅向状态为正常的消息接收端发送消息,而针对状态为异常的消息接收端,本发明是不向其发送消息的,这能够避免中转服务器在消息传输过程中的丢包现象。至于状态为异常的消息接收端,其在恢复正常比如重启或者重连时,会将截至当前最新收到的消息所标记的序列号发送至中转服务器,以由中转服务器执行消息续传机制,实现了消息续传,保证消息接收端收到在异常时无法收到的消息,以应对网络质量不好的情况。
[0162]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【主权项】
1.一种消息续传方法,其特征在于,该方法应用于中转服务器,包括: 接收消息,并按照序列号递增原则为该消息分配序列号,将该消息、该消息对应的消息标识、以及该消息被分配的序列号保存至消息列表,其中,任意两个消息被分配的序列号不同; 接收消息订阅请求,所述消息订阅请求携带了发送该消息订阅请求的消息接收端的标识和状态以及该消息接收端需要订阅的消息对应的消息标识; 将所述消息订阅请求携带的消息标识、消息接收端的标识和状态存储至消息接收端列表中; 从消息接收端列表中选取消息标识、且状态为正常的消息接收端的标识; 从消息列表中找到与选取的消息标识对应的消息,依据选取的消息接收端的标识将该消息、以及该消息被分配的序列号一起发送至消息接收端,并将该序列号作为向该消息接收端发送的消息的序列号记录至消息接收端列表; 接收消息接收端发送的序列号,依据接收的序列号和消息接收端列表记录的向该消息接收端的标识发送的消息的序列号续传对应的消息至该消息接收端。
2.根据权利要求1所述的方法,其特征在于,消息对应的消息标识为: 对消息的类型进行哈希运算得到的结果。
3.根据权利要求1所述的方法,其特征在于,所述消息列表包括:一级索引列表、二级索引列表和数据列表;所述一级索引列表中包含多个一级索引块,所述二级索引列表中包含多个二级索引块,所述数据列表中包含多个数据块; 所述将消息、消息对应的消息标识、以及消息被分配的序列号保存至消息列表包括: 依据消息对应的消息标识识别一级索引列表中是否存在已记录了该消息标识的一级索引块,如果是,从二级索引列表的首个二级索引块开始顺次遍历二级索引列表,将在二级索引列表中最先遍历到的空闲二级索引块的地址记录至该存在的一级索引块,如果否,从二级索引列表的首个二级索引块开始顺次遍历二级索引列表,将在二级索引列表中最先遍历到的空闲二级索引块的地址、与该消息标识一起记录至一级索引列表中的空闲一级索引块; 从数据列表的首个数据块开始顺次遍历数据列表,将在数据列表中最先遍历到的空闲数据块的地址、以及该消息被分配的序列号记录至在二级索引列表中最先遍历到的空闲二级索引块; 在数据列表中最先遍历到的空闲数据块记录该消息。
4.根据权利要求3所述的方法,其特征在于,所述在数据列表中最先遍历到的空闲数据块记录该消息包括: 比较该消息的大小与最先遍历到的空闲数据块的大小; 如果前者小于或等于后者,则在数据列表中最先遍历到的空闲数据块记录该消息; 如果前者大于后者,则确定记录该消息需要使用的数据块数量N,从所述最先遍历到的空闲数据块开始使用数据列表中N个空闲数据块一起记录该消息;其中,在使用N块数据块记录消息时,每个数据块的尾部需要记录下个数据块的地址。
5.根据权利要求4所述的方法,其特征在于,所述从消息列表中找到与选取的消息标识对应的消息包括: 依据该选取的消息标识从一级索引列表中找到已记录了该消息标识的一级索引块,识别该找到的一级索引块记录的二级索引块地址; 针对识别出的每一二级索引块地址执行以下步骤: 从二级索引列表中找到该二级索引块地址记录的数据块地址, 如果数据列表中该数据块地址未记录其他数据块的地址,则将该数据块地址记录的内容作为与该选取的消息标识对应的消息; 如果数据列表中该数据块地址记录了其他数据块地址,则, 将该数据块地址作为首个数据块地址,将首个数据块地址记录的其他数据块地址作为当前数据块,识别当前数据块是否记录了其他数据块地址, 如果否,将数据列表中从首个数据块地址至当前数据块地址记录的内容组织在一起作为与该选取的消息标识对应的消息, 如果是,将当前数据块地址记录的其他数据块地址更新为当前数据块地址,返回识别当前数据块地址是否记录了其他数据块地址的操作。
6.根据权利要求1所述的方法,其特征在于,消息接收端列表包括索引列表和数组列表;所述索引列表中包含多个索引块,所述数组列表中包含数组块; 所述将消息订阅请求携带的消息标识、消息接收端的标识和状态存储至消息接收端列表中包括: 依据消息订阅请求携带的消息标识,识别索引列表中是否存在已记录了该消息标识的索引块,如果是,从数组列表的首个数组块开始顺次遍历数组列表,将在数组列表中最先遍历到的空闲数组块的地址记录至该存在的索引块,如果否,从数组列表的首个数组块开始顺次遍历数组列表,将在数组列表中最先遍历到的空闲数组块的地址与该消息标识一起记录至索引列表中的空闲索引块; 在数组列表中最先遍历到的空闲数组块内记录该消息请求携带的消息接收端的标识和状态。
7.根据权利要求1或6所述的方法,其特征在于,该方法进一步包括: 检测已发送消息订阅请求的每一消息接收端的状态; 当检测到消息接收端的状态与消息接收端列表记录的该消息接收端的状态不一致,用检测到的该消息接收端的状态更新消息接收端列表记录的该消息接收端的状态。
8.根据权利要求7所述的方法,其特征在于,所述从消息接收端列表中选取消息标识、且状态为正常的消息接收端的标识包括: 识别索引列表中每一索引块记录的消息标识和数组块地址; 针对识别出的每一数组块地址,从数组列表中找到该数组块地址记录的消息接收端的状态,如果该状
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1