Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support retry queue on broker #1

Open
tangxuehua opened this issue Jun 7, 2014 · 1 comment
Open

support retry queue on broker #1

tangxuehua opened this issue Jun 7, 2014 · 1 comment

Comments

@tangxuehua
Copy link
Owner

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

@tangxuehua
Copy link
Owner Author

还需要提供给开发者选项,让开发者选择是否需要把出现异常的消息自动放入重试队列,然后跳过该异常消息。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant