---
name: RateLimitConfig
lang: go
domain: infra
version: "1.0.0"
algebraic: product
definition: |
  type RateLimitConfig struct {
      RequestsPerSecond float64
      BurstSize         int
      KeyFunc           func(r *http.Request) string
      CleanupInterval   time.Duration
  }
description: "Configuracion declarativa para construir un rate limiter HTTP. Agrupa tasa sostenida, rafaga maxima, extractor de clave y frecuencia de GC."
tags: [rate_limit, config, http, middleware, infra]
uses_types: []
file_path: "functions/infra/rate_limiter.go"
---

## Ejemplo

```go
cfg := RateLimitConfig{
    RequestsPerSecond: 10,
    BurstSize:         20,
    KeyFunc:           func(r *http.Request) string { return r.Header.Get("X-API-Key") },
    CleanupInterval:   5 * time.Minute,
}
```

## Notas

Estructura inmutable que parametriza un limiter. `KeyFunc` nil indica usar la IP del cliente. `CleanupInterval` 0 desactiva el GC automatico. El consumidor decide como inicializar el limiter a partir de esta config.
