Skip to main content
Existem duas formas de ver o Fetcher funcionando. Escolha uma. O caminho A é a rota mais curta até um primeiro sucesso. Comece por ele se você só quer avaliar o produto.

Caminho A — Rode o Engine sem infraestrutura


O Engine traz um harness em memória em pkg/engine/memory. Ele cobre as portas de armazenamento: o registro de conectores, o connection store, o cache de esquemas, o result sink e o execution store. Você não precisa de MongoDB, de RabbitMQ nem de object storage. Ele não traz um CredentialProtector, então, se você ligar a persistência criptografada, precisa fornecer o seu.
1

Adicione o módulo

O Engine é um módulo separado dos serviços. Ele não tem dependências de terceiros, então esse import não traz mais nada junto.
2

Construa, planeje, execute

3

Leia o resultado

Nenhum destino de resultado está configurado aqui, então o Engine roda em modo direct. Ele devolve as linhas inline como JSON indentado, mais um digest SHA-256 sobre esses bytes exatos. Os bytes são determinísticos: a mesma entrada sempre produz o mesmo digest.
Para ir à produção, troque o harness em memória pelos seus próprios adaptadores. O Manager e o Worker do próprio Fetcher são a implementação de referência.

Caminho B — Rode os serviços autônomos


Este caminho entrega a API REST e os jobs assíncronos. Tudo roda localmente com Docker Compose.

Pré-requisitos

  • Docker e Docker Compose
  • Make
  • Go, apenas para desenvolvimento. A versão do toolchain está no go.mod do repositório.

Configurar e rodar

1

Clone o repositório

2

Crie os arquivos de ambiente

Isso copia o .env.example de cada componente para .env.
3

Gere a chave-mestra de criptografia

Copie a chave para APP_ENC_KEY em ambos components/manager/.env e components/worker/.env. Os dois serviços precisam do mesmo valor. O Worker a usa para descriptografar credenciais e para conferir assinaturas de mensagens.
Substitua o placeholder antes de iniciar: use uma chave válida de 32 bytes codificada em Base64. O placeholder criado por make set-env falha ao decodificar uma chave-mestra Base64 inválida. A mensagem master key too short: got 0 bytes, minimum 32 required corresponde a um valor vazio ou curto que decodifica. O Fetcher não tem modo de fallback em texto claro.
4

Suba tudo

5

Verifique se a API responde

  • API REST: http://localhost:4006
  • Referência da API no Scalar, quando SWAGGER_ENABLED=true: http://localhost:4006/swagger/docs
  • Gerenciamento do RabbitMQ: http://localhost:3008

Execute sua primeira extração

Uma extração tem três movimentos. Registre uma conexão, crie um job e depois consulte o job.

1. Registre uma conexão de banco de dados

O header X-Product-Name nomeia o produto dono da conexão. Use o mesmo valor em metadata.source do job no passo 2, porque o Fetcher compara os dois. O Fetcher criptografa a senha antes de gravar o registro. Teste a conexão antes de usá-la:

2. Crie um job de extração

Nomeie os campos que você quer, por tabela, por fonte de dados:
A API responde 202 Accepted com um ID de job. Envie a mesma requisição duas vezes dentro de 5 minutos e você recebe 200 OK com o primeiro job, em vez de um segundo. Um job que falhou não bloqueia uma nova tentativa.

3. Consulte o job

Um job termina em um de dois estados terminais: completed ou failed. Na conclusão, o Worker já criptografou o resultado no object storage e publicou um evento job.completed. Os dois estados anteriores são pending e processing. Jobs de extração traz o ciclo de vida completo de quatro estados.
Ligue a autenticação com PLUGIN_AUTH_ENABLED=true. As requisições passam então a carregar um header Authorization: Bearer <token>. Este quickstart roda com a autenticação desligada.

Próximos passos


Conceitos centrais

Conexões, descoberta de esquema, jobs, filtros e resultados.

Configuração

Cada variável de ambiente, por componente.

Implantação

Dependências, filas, escala e as checagens fail-closed de inicialização.

Segurança

Derivação de chaves, rotação, assinatura de mensagens e validação de host.