问题描述
我用Java编写了一个批处理作业。我的批处理作业基本上每天运行一次,其逻辑是仅使Rest调用其他一些api。在成功的情况下,没有问题,但在失败的情况下,这意味着另一个api抛出异常或可能是任何问题,那么在这种否定情况下的处理方法是什么。我们是否需要存储收到错误响应的ID,然后在下一个预定的作业中重试对这些ID的请求?
在运行批处理作业时处理异常的最佳方法是什么?
解决方法
有两个选项:
- 使用Spring Batch中的内置重试机制:https://docs.spring.io/spring-batch/docs/4.2.x/reference/html/step.html#retryLogic
- 使用具有更多云原生方法的断路器或等效断路器,请参阅此处的Michael演讲:https://youtu.be/-Icd-s2JoAw?t=862