新发布的 ActiveMQ (5.12) 现在支持暂停和恢复向队列消费者传递消息,这非常有用。问题是,当您恢复消息传递时,
- 如果有消息进入队列:broker 会立即将待处理的消息发送给消费者,这完全没问题。
- 但是如果没有消息进入队列:队列中的未决消息将不会发送给消费者,直到对队列进行过期检查(默认为30秒,可以通过expireMessagesPeriod属性控制)和非过期消息将在之后发送给消费者。
显然我们可以改变expireMessagesPeriod来限制这个延迟,但是当你需要一个 milisec 精度时,每 milisec 执行一次过期检查是没有意义的。
无论如何强制队列在恢复后立即开始发送消息?