Skip to main content
Fetcher se configura por completo desde el entorno. Cada servicio lee su propio conjunto. El Manager y el Worker comparten la mayoría de las variables, y cada uno tiene algunas propias. Para trabajo local, make set-env copia el .env.example de cada componente a .env. En producción, define las variables a través de tu orquestador.
Los dos servicios necesitan el mismo APP_ENC_KEY. El Worker lo usa para descifrar credenciales de datasource y para verificar la firma de cada mensaje que envía el Manager. Una clave ausente o corta detiene el proceso al arrancar. El log dice master key too short: got 0 bytes, minimum 32 required, y el servicio nunca abre un puerto.

Ambos servicios


Aplicación

MongoDB

MongoDB guarda los metadatos propios de Fetcher: registros de conexión y registros de job.

RabbitMQ

Multi-tenancy

Paradas de arranque en modo multi-tenant. MULTI_TENANT_ENABLED=true exige MULTI_TENANT_URL, MULTI_TENANT_SERVICE_API_KEY y MULTI_TENANT_REDIS_HOST. Un valor ausente aborta el arranque en ambos servicios, y el error nombra la variable. Dos variables MULTI_TENANT_SERVICE_API_KEY_<SERVICE> que se normalizan al mismo token también abortan el arranque, y el error nombra el token. La credencial de un servicio nunca sobrescribe en silencio la de otro.

Telemetría

Solo el Manager


El router se niega a construirse ante dos incompatibilidades de seguridad. Reporta tenant middleware requires effective authentication cuando el modo multi-tenant corre con la autenticación desactivada. Reporta auth middleware is enabled but its address is empty cuando PLUGIN_AUTH_ENABLED=true y PLUGIN_AUTH_ADDRESS está vacío. En ambos casos el Manager no arranca.

Solo el Worker


Runtime y eventos

El Worker falla cerrado ante la configuración de eventos. STREAMING_ENABLED sin definir o en false aborta el arranque con STREAMING_ENABLED=true is required for mandatory job event notifications. Un RABBITMQ_JOB_EVENTS_EXCHANGE vacío, un STREAMING_BROKERS vacío y un STREAMING_CLOUDEVENTS_SOURCE vacío abortan el arranque de la misma forma, igual que un STREAMING_COMPRESSION o un STREAMING_REQUIRED_ACKS fuera del conjunto aceptado. El Worker nunca cae a un emisor silencioso que no hace nada.

Almacenamiento de objetos

El Worker escribe cada resultado almacenado en almacenamiento de objetos compatible con S3. El esquema del endpoint controla TLS, así que http:// lo desactiva. Define la expiración de los resultados con una política de ciclo de vida en el bucket. Consulta Despliegue.

Compatibilidad de firma de mensajes

Datasources internos


Los datasources internos son las bases de datos de otros productos Lerian. Fetcher los resuelve sin una conexión registrada por API. Declaras cada uno con un grupo DATASOURCE_{NAME}_*, donde {NAME} es un prefijo que eliges tú. Los valores aceptados en _CONFIG_NAME son un registro fijo: midaz_onboarding, midaz_transaction y plugin_crm. Fetcher omite cualquier otro nombre y registra una advertencia que nombra tanto el valor rechazado como el conjunto aceptado. Para tus propias bases de datos, registra una conexión a través de la API.
Un valor incorrecto omite el datasource, y lo dice. Un _TYPE inválido, un _SSLMODE inválido, o un _HOST o _DATABASE ausente hacen que Fetcher omita ese datasource y registre una advertencia que nombra el config name y el valor ofensor. Fetcher nunca degrada una configuración TLS para alcanzar una base de datos.

Próximos pasos


Despliegue

Dependencias, colas, almacenamiento, escalado y verificaciones de arranque.

Seguridad

Clave maestra, claves derivadas, firma y validación de host.

Observabilidad

Sondas, comportamiento de drenaje, métricas y trazas.

Primeros pasos

Una primera extracción, con o sin infraestructura.