Skip to main content
O Fetcher se configura inteiramente pelo ambiente. Cada serviço lê o próprio conjunto. O Manager e o Worker compartilham a maior parte das variáveis, e cada um tem algumas próprias. Para trabalho local, make set-env copia o .env.example de cada componente para .env. Em produção, defina as variáveis pelo seu orquestrador.
Os dois serviços precisam do mesmo APP_ENC_KEY. O Worker o usa para descriptografar credenciais de fontes de dados e para conferir a assinatura de toda mensagem que o Manager envia. Uma chave ausente ou curta interrompe o processo na inicialização. O log traz master key too short: got 0 bytes, minimum 32 required, e o serviço nunca abre uma porta.

Os dois serviços


Aplicação

MongoDB

O MongoDB guarda os metadados do próprio Fetcher: registros de conexão e registros de job.

RabbitMQ

Multi-tenancy

Paradas de inicialização em modo multi-tenant. MULTI_TENANT_ENABLED=true exige MULTI_TENANT_URL, MULTI_TENANT_SERVICE_API_KEY e MULTI_TENANT_REDIS_HOST. Um valor ausente aborta a inicialização nos dois serviços, e o erro nomeia a variável. Duas variáveis MULTI_TENANT_SERVICE_API_KEY_<SERVICE> que normalizam para o mesmo token também abortam a inicialização, e o erro nomeia o token. A credencial de um serviço nunca sobrescreve a de outro em silêncio.

Telemetria

Somente o Manager


O roteador se recusa a subir em duas incompatibilidades de segurança. Ele reporta tenant middleware requires effective authentication quando o modo multi-tenant roda com a autenticação desligada. Ele reporta auth middleware is enabled but its address is empty quando PLUGIN_AUTH_ENABLED=true e PLUGIN_AUTH_ADDRESS está em branco. Nos dois casos o Manager não inicia.

Somente o Worker


Execução e eventos

O Worker falha de forma fechada na configuração de eventos. STREAMING_ENABLED não definida ou false aborta a inicialização com STREAMING_ENABLED=true is required for mandatory job event notifications. Um RABBITMQ_JOB_EVENTS_EXCHANGE em branco, um STREAMING_BROKERS vazio e um STREAMING_CLOUDEVENTS_SOURCE vazio abortam a inicialização do mesmo jeito, assim como um STREAMING_COMPRESSION ou um STREAMING_REQUIRED_ACKS fora do conjunto aceito. O Worker nunca cai para um emissor silencioso que não faz nada.

Armazenamento de objetos

O Worker grava todo resultado armazenado em armazenamento de objetos compatível com S3. O esquema do endpoint controla o TLS, então http:// o desliga. Defina a expiração dos resultados com uma política de ciclo de vida no bucket. Veja Implantação.

Compatibilidade da assinatura de mensagens

Fontes de dados internas


Fontes de dados internas são os bancos de outros produtos Lerian. O Fetcher as resolve sem uma conexão registrada pela API. Você declara cada uma com um grupo DATASOURCE_{NAME}_*, onde {NAME} é um prefixo que você escolhe. Os valores aceitos de _CONFIG_NAME formam um registro fixo: midaz_onboarding, midaz_transaction e plugin_crm. O Fetcher pula qualquer outro nome e registra um aviso que nomeia tanto o valor rejeitado quanto o conjunto aceito. Para os seus próprios bancos, registre uma conexão pela API.
Um valor ruim pula a fonte de dados, em alto e bom som. Um _TYPE inválido, um _SSLMODE inválido ou um _HOST ou _DATABASE ausente faz o Fetcher pular essa fonte de dados e registrar um aviso que nomeia o config name e o valor problemático. O Fetcher nunca rebaixa uma configuração de TLS para alcançar um banco de dados.

Próximos passos


Implantação

Dependências, filas, armazenamento, escala e checagens de inicialização.

Segurança

Chave-mestra, chaves derivadas, assinatura e validação de host.

Observabilidade

Sondas, comportamento de drenagem, métricas e tracing.

Primeiros passos

Uma primeira extração, com ou sem infraestrutura.