关于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做客户端的本地缓存,即使重复发送也可以避免。
00
相似问题
ack这里延迟消息是个什么业务逻辑
回答 1
关于架构客户端的一个疑问
回答 1
请问在虚拟机上怎么操作呢
回答 1
在ACK重发哪里有疑问
回答 1
关于semaphoreMap初始化的疑问
回答 1