我有一个用例,我在队列中使用某些日志,并使用该日志中的一些信息命中某些第三方API,以防第三方系统无法正确响应,我希望为该特定日志实现重试逻辑。

我可以添加一个时间字段并将消息重新推送到同一队列,如果其时间字段有效(即小于当前时间),该消息将再次被消耗,否则,该消息将再次被插入队列。

但是,此逻辑将一次又一次地添加相同的日志,直到重试时间正确并且队列将不必要地增长为止。

有没有更好的方法来在Kafka中实现重试逻辑?

请您参考如下方法:

您可以创建多个重试主题,然后将失败的任务推送到该主题。例如,您可以创建3个主题,每个主题的分钟延迟不同,然后旋转单个失败的任务,直到达到最大尝试限制。

‘retry_5m_topic’ — for retry in 5 minutes

‘retry_30m_topic’ — for retry in 30 minutes

‘retry_1h_topic’ — for retry in 1 hour


查看更多详细信息: https://blog.pragmatists.com/retrying-consumer-architecture-in-the-apache-kafka-939ac4cb851a


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!