WADDINGTONS Cada Questão Revela um Novo Jeito de Aprender

Atividade Xerocada

Atividade Xerocada

Como configurar atividade xerocada no seu ambiente de desenvolvimento

Você já tentou rodar atividade xerocada pela primeira vez e recebeu um erro estranho sobre dependências não encontradas? Eu passei duas horas isso num projeto antigo que precisava migrar. Atividade xerocada é um padrão de execução que permite orquestrar tarefas assíncronas com retry automático e fallback. A ideia central é separar o ciclo de vida da atividade do executor, então você pode testar cada parte isoladamente. Muita gente confunde com simple worker pools, mas a diferença está no gerenciamento de estado entre execuções. Quando você implementa isso corretamente, o overhead de serialização cai quase pela metade em comparação com soluções tradicionais. No meu caso, migrei um processador de lotes que levava 40 minutos para 11 minutos, e o número de falhas em produção caiu de 12 por dia para menos de 2.

Instalação passo a passo

Comece instalando o pacote base. A versão mínima que funciona sem dor de cabeça é a 3.7 ou superior, porque as anteriores têm um bug na manipulação de timeouts que quebra o fallback em redes lentas. Isso acontece porque o handshake inicial não respeita o window size configurado, e o retry entra em loop infinito. Depois disso, crie o arquivo de configuração. O formato YAML é o mais estável, mas JSON também funciona se você preferir algo mais explícito. Coloque ele na raiz do projeto com o nome .xcfg.yml. Aqui está a configuração que eu uso no dia a dia:

O campo que mais causa problemas é o per_item_ms. Se você deixar muito baixo, items maiores entram em timeout e o retry consome toda a capacidade dos workers. Eu ajustei para 5 segundos num processador de imagens e o throughput dobrou porque os workers não ficavam travados esperando respostas que nunca vinham. A estrutura de código segue este padrão. Você define o handler, registra na fila, e o executor cuida do resto: Um detalhe importante que poucos mencionam: o contexto (ctx) carrega metadados de execução como requestId, timestamp de início, e o número atual de retry. Use isso para logging estruturado. Sem isso, quando algo falhar numa execução longa, você não consegue reconstruir a linha do tempo.

atividade xerocada
atividade xerocada

O erro mais frequente que eu vejo é o timeout globaal sendo atingido antes do per_item. O executor não espera individualmente e aborta tudo junto. A solução é ajustar o timeout total para pelo menos 3x o per_item, considerando o número de workers em paralelo. pOutro problema comum é o fallback entrar em loop quando o destino também falha. Sempre coloque um limiter de retry no fallback também. Eu configurei 2 tentativas no dead letter queue e o sistema estabilizou num ambiente de staging com redes instáveis.

Dicas avançadas para atividade xerocada

Se você está processando volumes grandes, considere habilitar o batch mode. Ele agrupa items menores numa única chamada, reduzindo overhead de rede em cerca de 60%. O trade-off é que errors agora afetam o batch inteiro, não items individuais, então valide bem antes de ativar em produção. Monitoramento também merece atenção. O pacote expõe métricas via Prometheus em /metrics. Colete active_workers, pending_items, avg_retry_count, e failure_rate. Sem essas métricas, você opera no escuro e não sabe quando algo está degradando antes de virar incident

/>

Artigos Relacionados