Review this generated gRPC client before it handles production reservations.
Reserve inventory with transport security, reuse the channel, honor the caller deadline, and retry unknown results without duplicate reservations.
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")
}
generated code is illustrative, not from any one model