参考
核心学习文章:
Spring(34)——Spring Retry介绍
简略版:
重试框架Spring retry实践、
概念总结
RetryOperations:Spring重试接口
RetryTemplate:RetryOperations的Spring默认实现
RetryPolicy:重试机制接口
SimpleRetryPolicy:RetryPolicy的Spring默认实现
核心学习文章中第一部分介绍了所有的policy以及使用实例。
RetryCallback(先执行)-》RecoveryCallback(RetryCallback不能再重试的时候,如果定义了RecoveryCallback,就会调用RecoveryCallback)
RetryCallback与RecoveryCallback是RetryTemplate中要执行的方法,不管是显示定义还是匿名函数的方式。
RetryListener:RetryTemplate中可以注册监听器,类似于切面,可以在第一次尝试、最后一次尝试、失败时进行加强
实际demo
private static final RetryTemplate OPT_LOCK_RETRY_TEMPLATE;
private static final int MAX_RETRY_TIMES = 3;
static {
//最多重试3次
RetryPolicy simpleRetryPolicy = new SimpleRetryPolicy(MAX_RETRY_TIMES,
Collections.singletonMap(OptLockFailureException.class, true));
OPT_LOCK_RETRY_TEMPLATE = new RetryTemplate();
OPT_LOCK_RETRY_TEMPLATE.setRetryPolicy(simpleRetryPolicy);
}
TxnCommitDto txnCommitDto = OPT_LOCK_RETRY_TEMPLATE.execute(context ->
MtmBosClientFactory.getTxnCommitExecutor().execute(txnCommitCommand)
);