我是使用Spring Boot进行Spring批处理的新手,并且阅读了几乎所有可能的可用文章,但没有找到如下所示的用例的准确方案/摘要。
我使用了RetryTemplate
,但在那里它会立即重试异常项,因此对我不起作用。
我创建了跳过策略,该策略跳过异常并给了我预期的行为,但是无法以相同的方式启动重试尝试(3)。
有人可以帮忙提供一些例子,并指导我吗……
答案 0 :(得分:0)
在处理完所有5个项目失败/成功的项目之后,然后在一定时间间隔后重试失败的项目
容错功能(跳过和重试)在块内的项目上执行,而不是在整个块上执行。因此,不可能处理所有项目(其中某些项目可能会失败),一旦处理完整个块,请然后,然后重试失败的项目。指定重试策略时,此策略将应用于项目,而不是整个块。
我使用了RetryTemplate,但是在那里它立即重试异常项
您可以在重试模板上设置BackoffPolicy
,并且每次重试之间都会有一个退避期(而不是立即重试)。但是同样,此政策将应用于重试的项目,而不是整个块。
您可以使用的一种技术(因为输入是数据库表)是“过程指示器模式”的一种变体(显示为in this sample)。想法是使用标志来指示要处理的记录。您的作业应该只读取要处理的记录,将成功的记录标记为已处理(更新标志),将跳过的记录标记为未处理(或者因为默认为false而根本不更新标志)。这样,跳过的记录将成为下一次作业输入的一部分,并且将通过设计重试。
希望这会有所帮助。