由于网络等不稳定因素,一对一聊天源码中的消息在传递过程中并不是百分之百成功的,当消息传递失败时,系统会通过重试的方式重新发送消息,而在重试过程中很容易产生重复消息,进而影响系统数据的正确性。在开发一对一聊天源码时,该如何解决重复消息问题呢?
第一步尝试:消息队列
在开发一对一聊天源码时,消息传递时能够提供的服务质量标准有三种,分别是:
1、至多一次
主要是指消息在被传递过程中,最多会被送达一次。
2、至少一次
主要是指消息在被传递过程中,至少会被送达一次。
3、恰好一次
主要是指消息在被传递过程中,只会被送达一次。
我们在开发一对一聊天源码时所采用的消息队列所提供的服务质量标准基本都是“至少一次”,所以很难保证消息不重复,所以依靠消息队列处理重复消息效果并不好。
第二步尝试:幂等性
为解决重复消息问题,在一对一聊天源码开发时,可以让客户端的操作具备幂等性,所谓幂等性其实就是任意操作多次所造成的结果均与操作一次的结果相同。在一对一聊天源码中我们可以通过哪些方法实现幂等性操作呢?
1、利用数据库的唯一约束
在开发一对一聊天源码时,其实并不只有数据库可以通过唯一约束实现幂等,凡是支持类似“INSERT IF NOT EXIST”语义的存储类系统都可以用于实现幂等。
2、为更新数据设置前置条件
在一对一聊天源码开发时,我们可以提前为更新数据设置前置条件,只有满足该条件的数据才能更新,否则就拒绝更新,以此来实现幂等性。
3、记录并检查操作
记录并检查操作是一种通用性强、适用范围广的实现幂等性的方法,又被称作Token机制或全局唯一ID机制,主要是指在执行数据更新操作前,先检查一下是否执行过这个更新操作。
在一对一聊天源码中,我们可以通过幂等来解决重复消息问题,不过选择合适的幂等实现方式很重要。其实在开发一对一聊天源码的过程中,我们会遇到各种各样的问题,在解决这些问题时很难做到一步成功,只有通过一步步的试错才能走向最终的成功。
声明:本文由云豹科技原创,转载请注明作者名及原文链接,否则视为侵权
第一步尝试:消息队列
在开发一对一聊天源码时,消息传递时能够提供的服务质量标准有三种,分别是:
1、至多一次
主要是指消息在被传递过程中,最多会被送达一次。
2、至少一次
主要是指消息在被传递过程中,至少会被送达一次。
3、恰好一次
主要是指消息在被传递过程中,只会被送达一次。
我们在开发一对一聊天源码时所采用的消息队列所提供的服务质量标准基本都是“至少一次”,所以很难保证消息不重复,所以依靠消息队列处理重复消息效果并不好。
第二步尝试:幂等性
为解决重复消息问题,在一对一聊天源码开发时,可以让客户端的操作具备幂等性,所谓幂等性其实就是任意操作多次所造成的结果均与操作一次的结果相同。在一对一聊天源码中我们可以通过哪些方法实现幂等性操作呢?
1、利用数据库的唯一约束
在开发一对一聊天源码时,其实并不只有数据库可以通过唯一约束实现幂等,凡是支持类似“INSERT IF NOT EXIST”语义的存储类系统都可以用于实现幂等。
2、为更新数据设置前置条件
在一对一聊天源码开发时,我们可以提前为更新数据设置前置条件,只有满足该条件的数据才能更新,否则就拒绝更新,以此来实现幂等性。
3、记录并检查操作
记录并检查操作是一种通用性强、适用范围广的实现幂等性的方法,又被称作Token机制或全局唯一ID机制,主要是指在执行数据更新操作前,先检查一下是否执行过这个更新操作。
在一对一聊天源码中,我们可以通过幂等来解决重复消息问题,不过选择合适的幂等实现方式很重要。其实在开发一对一聊天源码的过程中,我们会遇到各种各样的问题,在解决这些问题时很难做到一步成功,只有通过一步步的试错才能走向最终的成功。
声明:本文由云豹科技原创,转载请注明作者名及原文链接,否则视为侵权