业务编号(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. 注意事项
- 合理选择业务编号字段
- 注意表达式的性能影响
- 考虑编号的唯一性
- 避免使用敏感信息