Skip to main content
Lerian BC Correios lleva tu correspondencia oficial con BACEN, por eso una instancia que no está lista es un evento operativo.

Health y readiness


GET /health informa el liveness. Responde 200 mientras el proceso se ejecuta, y no verifica las dependencias. GET /readyz ejecuta las verificaciones de dependencias. Responde 200 cuando el servicio puede recibir tráfico, y 503 cuando no puede o mientras se apaga. Reutiliza un resultado durante 250 milisegundos. En modo multi-tenant, /readyz también verifica el Tenant Manager y su Redis de eventos. /readyz no llama a BC Correio, porque cada tenant tiene sus propias credenciales. Para verificar el enlace con BC Correio de un tenant, llama a POST /settings/test-connection. GET /version devuelve la versión de build del servicio.

Cuota de solicitudes a BACEN y circuit breaker


Lerian BC Correios limita sus llamadas a BC Correio por credencial Sisbacen:
  • BC_CORREIO_RATE_LIMIT_PER_MINUTE llamadas por minuto, 50 de forma predeterminada.
  • BC_CORREIO_RATE_LIMIT_PER_HOUR llamadas por hora, 2700 de forma predeterminada.
El servicio rechaza un valor superior a 60 por minuto o a 3000 por hora. Cuando la cache está disponible, todas las réplicas comparten un conteo por credencial. Una llamada espera hasta BC_CORREIO_RATE_LIMIT_MAX_WAIT_SEC segundos por un espacio libre, 90 de forma predeterminada. Cada tenant tiene su propio circuit breaker para BC Correio. Cinco fallas seguidas lo abren. Después de 30 segundos, deja pasar una llamada para probar BC Correio otra vez.

Credenciales y claves


ENCRYPTION_KEY contiene la clave AES-256-GCM que cifra las credenciales de BC Correio, las claves de API de IA y las respuestas de idempotencia almacenadas. Acepta exactamente 32 bytes. Fuera del entorno development, el servicio no arranca sin ella. AMQP_SIGNING_KEY contiene la clave que firma los mensajes de auditoría en RabbitMQ. Sin ella, el servicio deriva una clave separada de ENCRYPTION_KEY. Cuando la configuras, acepta exactamente 32 bytes y debe ser diferente de ENCRYPTION_KEY.

Almacenamiento, outbox y retención


Lerian BC Correios almacena los correos en PostgreSQL. Almacena los adjuntos en un almacenamiento de objetos compatible con S3, o en el sistema de archivos local cuando OBJECT_STORAGE_PROVIDER es local. Las acciones de los usuarios llegan al registro de auditoría a través de una tabla de outbox y de RabbitMQ. El outbox intenta cada evento hasta AUDIT_OUTBOX_MAX_ATTEMPTS veces, 50 de forma predeterminada. El worker de retención elimina las filas de outbox publicadas después de AUDIT_OUTBOX_RETENTION_DAYS días, 7 de forma predeterminada. El worker de retención se ejecuta una vez cada 24 horas y aplica el período de retención de cada tenant. El servicio no aplica su propio esquema de base de datos. Un paso de migración separado lo aplica antes de que el servicio arranque.

Métricas y trazas


Define TRACING_ENABLED=true para exportar trazas, y METRICS_ENABLED=true para exportar métricas, por OTLP hacia OTEL_EXPORTER_OTLP_ENDPOINT. Define METRICS_PROMETHEUS_ENABLED=true para abrir un listener separado para un scrape de Prometheus, en METRICS_PROMETHEUS_ADDRESS. La dirección predeterminada es 127.0.0.1:9076. El puerto principal no tiene un endpoint de métricas. Consulta Observabilidad para la vista de la plataforma.

Postura de despliegue


DEPLOYMENT_MODE acepta local, byoc o saas. En saas, cada dependencia configurada debe usar TLS, o el servicio no arranca. ENV_NAME decide qué tan estrictas son las verificaciones de arranque. Con cualquier valor diferente de development, el servicio también exige:
  • POSTGRES_USER y POSTGRES_NAME, con un POSTGRES_SSLMODE diferente de disable.
  • RABBITMQ_URL, sin las credenciales guest:guest. El servicio no arranca si no puede conectarse a RabbitMQ.
  • ENCRYPTION_KEY, con exactamente 32 bytes.
  • ALLOWED_ORIGINS, con un valor diferente de *.
  • FEATURE_AUDIT_ENABLED sin el valor false.
Cada entorno necesita LICENSE_KEY y un true o false explícito en PLUGIN_AUTH_ENABLED. Un valor ausente o inválido detiene el arranque.