关于ACK确认机制的设计这里有点疑问

来源:7-26 IM服务中的消息ACK确认机制(下)

宝慕林4584053

2025-07-24

老师的方案我理解是,im-core-server 在投递业务消息到 client 之后会往缓存里放个标记。

那假如 client 回复 ack 消息特别快,在标记写到缓存前,im-core-server 就收到了 ack 消息,对应的 handler 会去删除标记,这个时候因为标记还没写到缓存里,所以没东西可删除。后续标记才写到缓存中去。
延迟消息到来的时候,检查缓存有标记存在,这样就会触发第二次投递,那这样客户端不就收到重复消息了吗

请问下老师是否会存在这样的情况,如果要优化的话,一般要怎么考虑?

写回答

1回答

Danny_Idea

8天前

1.客户端的ack可以增加重试功能,以每条消息id为粒度去做消息ack操作。2.客户端做幂等,例如针对消息id做客户端的本地缓存,即使重复发送也可以避免。

0
0

SpringCloudAlibaba高并发仿斗鱼直播平台实战

SpringCloudAlibaba高并发仿斗鱼直播平台实战

429 学习 · 348 问题

查看课程