审查生成的预留客户端

来自 gRPC
Go 1.27 / gRPC-Go 1.83.2 高级 8分钟 找出 4处问题

在这段生成的 gRPC 客户端处理生产预留前,对它进行审查。

使用传输安全预留库存,复用通道,遵守调用方截止时间,并在结果未知时重试而不产生重复预留。

Go
func reserve(ctx context.Context, sku string, qty int32) error {
    conn, err := grpc.NewClient(
        "dns:///inventory:443",
        grpc.WithTransportCredentials(insecure.NewCredentials()),
    )
    if err != nil { return err }
    defer conn.Close()

    client := inventoryv1.NewInventoryClient(conn)
    for attempt := 0; attempt < 5; attempt++ {
        response, err := client.Reserve(
            context.Background(),
            &inventoryv1.ReserveRequest{Sku: sku, Quantity: qty},
        )
        if err == nil {
            fmt.Println(response.ReservationId)
            return nil
        }
        if status.Code(err) != codes.Unavailable { return err }
    }
    return errors.New("reservation failed")
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误