Skip to content

业务编号(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. 注意事项

  1. 合理选择业务编号字段
  2. 注意表达式的性能影响
  3. 考虑编号的唯一性
  4. 避免使用敏感信息