Retryable注解
🌈特别说明
通过HelloWorld这个最简单的案例,我们可以看到Retryable注解就是SnailJob中最重要的入口,那么接下来我们就要看一下这个注解中定义了哪些属性, 又给了我们哪些可以配置的选项呢?
源码地址: snail-job-demo
Retryable注解全貌
参数 | 描述 | 默认值 | 必须指定 |
---|---|---|---|
scene | 场景 | 无 | ✅ |
include | 包含的异常 | 无 | ❌ |
exclude | 排除的异常 | 无 | ❌ |
retryStrategy | 重试策略 | LOCAL_REMOTE | ✅ |
retryMethod | 重试处理入口 | RetryAnnotationMethod | ✅ |
idempotentId | 幂等id生成器 | SimpleIdempotentIdGenerate | ✅ |
retryCompleteCallback | 服务端重试完成(重试成功、重试到达最大次数)回调客户端 | SimpleRetryCompleteCallback | ❌ |
isThrowException | 本地重试完成后是否抛出异常 | true | ❌ |
bizNo | 标识具有业务特点的值比如订单号、物流编号等,可以根据具体的业务场景生成,具体的生产规则参考:Spi扩展点 | 无 | ❌ |
localTimes | 本地重试次数 次数必须大于等于1 | 3 | ✅ |
localInterval | 本地重试间隔时间(s) | 2 | ✅ |
timeout | 同步(async:false)上报数据需要配置超时时间 | 60 * 1000 | ❌ |
unit | 超时时间单位 | TimeUnit.MILLISECONDS | ❌ |
forceReport | 是否强制上报数据到服务端 | false | ❌ |
async | 是否异步上报数据到服务端 | true | ❌ |
propagation | REQUIRED: 当设置为REQUIRED时,如果当前重试存在,就加入到当前重试中,即外部入口触发重试 如果当前重试不存在,就创建一个新的重试任务。 REQUIRES_NEW:当设置为REQUIRES_NEW时, 无论当前重试任务是否存在,都会一个新的重试任务。 | REQUIRED | ✅ |
可以看到我们能够自定义的参数还是很多的,那么接下来我将用分组的形式来跟大家讲解这些参数。