qunarcorp / qmq

QMQ是去哪儿网内部广泛使用的消息中间件,自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

消息不用直接添加到 时间轮

xujianhai666 opened this issue · comments

问题描述
现在延迟消息到达 delya-server 的时候, 除了添加到 指定目标时间的schedule log, 还会直接投递到 多层时间轮的, 但是 时间轮实现 基于 内存的, 无限制添加到时间轮 会导致 内存吃紧

消息添加到时间轮之前, 应该判断下延迟消息的延迟时间, 如果太大(可配置), 比如大于 1天, 就不直接添加到 时间轮里面

@xujianhai666 delay-server接收延迟消息时,并不是无限制地添加到内存hash wheel,而是会有一定的限制逻辑,大概逻辑是:如果接收到的延迟消息所属的schedule segment已经被hash wheel load或者所属schedule segment正在被加载,那么才会加载到hash wheel中去。整个逻辑在 WheelTickManager 这个类中,可以查阅下

@xujianhai666 delay-server接收延迟消息时,并不是无限制地添加到内存hash wheel,而是会有一定的限制逻辑,大概逻辑是:如果接收到的延迟消息所属的schedule segment已经被hash wheel load或者所属schedule segment正在被加载,那么才会加载到hash wheel中去。整个逻辑在 WheelTickManager 这个类中,可以查阅下

好的,谢谢