消息不用直接添加到 时间轮
xujianhai666 opened this issue · comments
xujianhai666 commented
问题描述
现在延迟消息到达 delya-server 的时候, 除了添加到 指定目标时间的schedule log, 还会直接投递到 多层时间轮的, 但是 时间轮实现 基于 内存的, 无限制添加到时间轮 会导致 内存吃紧
消息添加到时间轮之前, 应该判断下延迟消息的延迟时间, 如果太大(可配置), 比如大于 1天, 就不直接添加到 时间轮里面
Dennis commented
@xujianhai666 delay-server接收延迟消息时,并不是无限制地添加到内存hash wheel,而是会有一定的限制逻辑,大概逻辑是:如果接收到的延迟消息所属的schedule segment已经被hash wheel load或者所属schedule segment正在被加载,那么才会加载到hash wheel中去。整个逻辑在 WheelTickManager
这个类中,可以查阅下
xujianhai666 commented
@xujianhai666 delay-server接收延迟消息时,并不是无限制地添加到内存hash wheel,而是会有一定的限制逻辑,大概逻辑是:如果接收到的延迟消息所属的schedule segment已经被hash wheel load或者所属schedule segment正在被加载,那么才会加载到hash wheel中去。整个逻辑在
WheelTickManager
这个类中,可以查阅下
好的,谢谢