Skip to content

support retry queue on broker #1

@tangxuehua

Description

@tangxuehua

目前,对于消费失败(遇到异常)的消息,我们先记录错误日志,然后将该消息放入本地内存的重试队列;放入重试队列后,会定期对该消息进行重试,重试队列中的消息会定时被取出一个来重试。通过这样的设计,可以确保消费有异常的消息不会被认为消费已成功,也就是说不会从ProcessQueue中移除;但不影响该消息的后续消息的消费,该消息的后续消息仍然能够被消费,但是ProcessQueue的消费位置,即滑动门不会向前移动了;因为只要该消息一直消费遇到异常,那就意味着该消息所对应的queueOffset不能被认为已消费;而我们发送到broker的是当前最小的已被成功消费的queueOffset,所以broker上记录的当前queue的消费位置(消费进度)不会往前移动,直到当前失败的消息消费成功为止。所以,如果我们重启了消费者服务器,那下一次开始消费的消费位置还是从当前失败的位置开始,即便当前失败的消息的后续消息之前已经被消费过了;所以应用需要对每个消息的消费都要支持幂等;未来,我们会在broker上支持重试队列,然后我们可以将消费失败的消息发回到broker上的重试队列,发回到broker上的重试队列成功后,就可以让当前queue的消费位置往前移动了。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions