# 《分布式IM系统》大后端平台-消息服务-第07节:单聊消息的撤回流程设计和实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/179Jpfcef (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本节难度:★★★☆☆
  • 本节重点:对单聊消息的撤回流程进行设计和实现,从源码级别掌握单聊消息的撤回流程,重点理解用户从发出消息后,手动选中消息到撤回消息,单聊消息在整个分布式IM即时通讯系统中触发撤回操作的流转过程,结合自身实际项目思考,将本节学到的知识灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/179Jpfcef (opens new window)

大家好,我是冰河~~

大家想像一下,当你在分布式IM即时通讯系统中,向自己的好友发送消息时,发现自己发错消息了,或者本来想给张三发送消息,结果却将消息发送给李四了,那这种场景怎么处理呢?别慌,咱们的分布式IM即时通讯系统要做到跟微信一样丝滑,支持消息撤回,安排~~

# 一、前言

在前面的文章中,我们已经实现了单聊消息的发送流程,拉取流程和已读流程,可以这么说,对于单聊消息来说,我们已经打通了从消息发送,到消息接收的整个完整链路。此时,还有一种场景需要我们处理,那就是用户与好友聊天时,一不小心发错消息了,说到这里,可能有小伙伴会说:怎么会发错消息呢?其实这种场景还是有的,相信小伙伴们使用微信时,多多少少都有发错消息的经历吧,虽然不多,但还是存在的,所以,微信针对这些场景也提供了消息撤回的功能。

既然是有这种场景,那我们开发的消息微服务也要支持这种场景呀,安排~~

# 二、本节诉求

对单聊消息的撤回流程进行设计和实现,从源码级别掌握单聊消息的撤回流程,重点理解用户从发出消息后,手动选中消息到撤回消息,单聊消息在整个分布式IM即时通讯系统中触发撤回操作的流转过程,结合自身实际项目思考,将本节学到的知识灵活应用到自身实际项目中。

# 三、流程设计

单聊消息的撤回流程比较简单,具体如图7-1所示。


可以看到,整体流程还是比较简单的,主要涉及到用户及其好友、消息微服务、消息库、即时通讯SDK、消息中间件、即时通讯后端服务等

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码