如何增加每次重试失败下载之间的延迟

时间:2019-01-23 08:11:51

标签: apache-spark apache-kafka spark-streaming

我有一个火花流作业,可以接收来自Kafka的消息。对于某些消息,将从外部源下载文件。 如果由于某种原因外部源几次都没有响应作业重试。

如果仍然无法下载我想备份的文件,则需要花一个小时的时间,然后重试。如果仍然失败,则应将延迟时间加倍,并在2小时后重试,依此类推。

使用Kafka和Spark实施此功能的好方法是什么?

一个想法是将失败的下载信息发布回Kafka上的新主题,并添加下次重试的时间 然后,每10分钟运行一次批处理作业,以接收下载失败的信息。 然后,作业应执行以下操作: 1.对于未经过重试时间的所有下载,消息将重新发布到kafka。 2.对于已超过重试时间的所有下载,请重试下载,如果一切顺利,但如果失败,则信息会以新的重试时间发布回kafka。

我不喜欢此解决方案的一件事是,它接收并发布了消息,这些消息表明延迟没有过去,从而导致不必要的流量。

我希望获得有关此解决方案的利弊,或者是否有更好的方法来实现此目的。

感谢塞巴斯蒂安

0 个答案:

没有答案
相关问题