业务编号(bizNo)
快速开始
业务编号(bizNo)用于标识具有业务特点的值,如订单号、物流编号等。通过配置业务编号,可以更好地追踪和管理重试任务。
1. 基本用法
java
@Retryable(
scene = "remoteRetryWithBizNo",
retryStrategy = RetryType.ONLY_REMOTE,
bizNo = "orderVo.orderId" // 使用 SpEL 表达式
)
public boolean remoteRetryWithBizNo(OrderVo orderVo) {
throw new NullPointerException();
}
2. 表达式规则
2.1 支持的类型
- 直接使用参数:
#orderId
- 访问对象属性:
#orderVo.orderId
- 方法调用:
#orderVo.getOrderId()
- 字符串拼接:
'ORDER_' + #orderId
2.2 使用建议
- 选择具有业务含义的字段,如订单号、物流单号等
- 使用简单清晰的表达式,如
#orderVo.orderId
- 避免复杂的运算,如
#orderVo.getOrderId() + '_' + #orderVo.getUserId()
- 考虑空值处理,如
#orderVo?.orderId
3. 使用示例
3.1 订单支付场景
java
@Retryable(
scene = "order-payment",
bizNo = "#orderVo.orderId"
)
public boolean processPayment(OrderVo orderVo) {
// 支付处理逻辑
}
3.2 物流配送场景
java
@Retryable(
scene = "logistics-delivery",
bizNo = "#deliveryVo.trackingNo"
)
public boolean processDelivery(DeliveryVo deliveryVo) {
// 配送处理逻辑
}
4. 注意事项
- 合理选择业务编号字段
- 注意表达式的性能影响
- 考虑编号的唯一性
- 避免使用敏感信息