前提:无法用业务 ID 或其他方法判断这个消息是否在业务端被消费过,也就是说这个消息如果被消费过多次,仅仅会造成结果错误,但逻辑上是合法的,所以只能通过消息 ID 跟去重表内项比对判断是否消费过该消息。
请问各位有什么优雅的方案实现表内项回收吗,我能想到的是用容量足够大的 LRU。
请问各位有什么优雅的方案实现表内项回收吗,我能想到的是用容量足够大的 LRU。
1
lihongjie0209 Jun 28, 2018
消息最起码的属性有 ID 和 Timestemp
消息只在一定的时间范围内有意义, 极端一点, 你不可能收到一条一年前的消息还接着处理. 所以根据业务需求给消息 ID 设置一个 TTL, 或者是直接用 Redis 等缓存机制来保证在合理的时间范围内不会重复消费 |
2
streamo OP @lihongjie0209 嗯,跟我想的差不多,就是一个带过期键支持的 LRU cache。
|
3
lihongjie0209 Jun 28, 2018
@streamo #2 我觉能能运行的都很优雅, 至于优化, 需要的时候再说
|