System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种消息发送方法及装置制造方法及图纸_技高网

一种消息发送方法及装置制造方法及图纸

技术编号:42377399 阅读:20 留言:0更新日期:2024-08-16 15:02
本申请公开一种消息发送方法,可以应用于通信技术领域,该方法包括可以将待发送消息写入磁盘以及内存缓冲区,然后将写入内存缓冲区的待发送消息发送至接收端服务器,并对发送成功的消息进行标记,当发送端服务器宕机重启时,可以根据标记从磁盘中写入的待发送消息中确定未发送的消息,最后从磁盘中获取未发送的消息发送至接收端服务器,这样,本申请可以在消息发送之前,先将消息存储至磁盘中,磁盘可以保持断电之后的消息不丢失,当发送端服务器宕机重启时,可以从磁盘中获取未发送的消息发送至接收端服务器,从而也就避免了服务器意外宕机时,未发出去的消息丢失,降低了消息丢失的风险。

【技术实现步骤摘要】

本申请涉及通信,特别是涉及一种消息发送方法及装置


技术介绍

1、mqtt网关是一种支持mqtt协议的物联网网关,可以作为连接不同设备和云端平台之间的中间件。

2、mqtt网关在运行时需要在设备之间传递消息,目前,设备之间传递消息的方式为一般通过开启一个stream进行消息的传输。

3、此种方式需要将一批消息保存到内存中,等到满足发送条件(积攒到指定数量或者到了配置的时间)时才会批量发出,这就可能导致在发送服务器意外宕机时内存中缓存的还未发送的消息丢失,存在一定的消息丢失的风险。


技术实现思路

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、第四方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质中存储有代码,当所述代码被运行时,运行所述代码的设备实现前述第一方面任一项所述的方法。

46、相较于现有技术,本申请具有以下有益效果:

47、本申请可以将待发送消息写入磁盘以及内存缓冲区,然后将写入内存缓冲区的待发送消息发送至接收端服务器,并对发送成功的消息进行标记,当发送端服务器宕机重启时,可以根据标记从磁盘中写入的待发送消息中确定未发送的消息,最后从磁盘中获取未发送的消息发送至接收端服务器,这样,本申请可以在消息发送之前,先将消息存储至磁盘中,当发送端服务器宕机重启时,可以从磁盘中获取未发送的消息发送至接收端服务器,从而也就避免了服务器意外宕机时,未发出去的消息丢失,降低了消息丢失的风险。

本文档来自技高网...

【技术保护点】

1.一种消息发送方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,时间戳小于所述第一时间戳对应的消息为失效消息,时间戳小于所述第二时间戳对应的消息为失效标记消息,所述方法还包括:

5.根据权利要求3所述的方法,其特征在于,所述方法还包括:

6.一种消息发送装置,其特征在于,包括:

7.根据权利要求6所述的装置,其特征在于,所述装置还包括:

8.根据权利要求7所述的装置,其特征在于,所述装置还包括:

9.根据权利要求8所述的装置,其特征在于,时间戳小于所述第一时间戳对应的消息为失效消息,时间戳小于所述第二时间戳对应的消息为失效标记消息,所述装置还包括:

10.根据权利要求9所述的装置,其特征在于,所述装置还包括:

【技术特征摘要】

1.一种消息发送方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,时间戳小于所述第一时间戳对应的消息为失效消息,时间戳小于所述第二时间戳对应的消息为失效标记消息,所述方法还包括:

5.根据权利要求3所述的方法,其特征在于,所述方法还包括:

...

【专利技术属性】
技术研发人员:于昊
申请(专利权)人:东软睿驰汽车技术大连有限公司
类型:发明
国别省市:

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

1