# Cloudflare Queues vs Workflows: processos assíncronos sem travar a API
> Saiba quando usar Cloudflare Queues ou Workflows para eventos, retry, DLQ, agendamento, custo e processos duráveis em um produto real.
**Autores:** Mauro Mequelussi
**Publicado:** 2026-07-26T12:00:00.000Z
**Atualizado:** 2026-07-26T12:00:29.560057596Z
**Tags:** cloudflare, automacao, workflows, arquitetura, queues
---
Cloudflare Queues e Cloudflare Workflows resolvem problemas diferentes que costumam ser misturados em projetos criados rápido. Queue desacopla um produtor de um consumidor e entrega mensagens pelo menos uma vez. Workflow coordena um processo longo, com etapas persistidas, espera, retry e estado. A melhor arquitetura normalmente usa cada um no papel certo.

No ecossistema EA, Queues recebem conversões, respostas de mensageria e eventos fiscais. Workflows cuidam de abandono de checkout, expiração de PIX/boleto, broadcast, sincronizações e uploads que atravessam várias etapas. Essa separação evita que uma request do usuário espere uma integração externa lenta.

## Queue ou Workflow? A resposta direta

| Se você precisa... | Use | Exemplo |
| --- | --- | --- |
| amortecer pico e processar mensagens independentes | Queue | evento de conversão, pedido de nota, resposta assíncrona |
| tentar de novo um evento sem bloquear a API | Queue | webhook de pagamento que chama serviço externo |
| esperar horas ou dias e guardar o progresso | Workflow | expiração de boleto, lembrete, abandono de checkout |
| executar passos que não devem repetir após sucesso | Workflow | criar recurso, aguardar aprovação, enviar comunicação |
| coordenar estado fortemente consistente por entidade | Durable Object ou banco | sala em tempo real, estoque estrito |

::callout{type="warning" title="Queue entrega pelo menos uma vez"}
O consumer deve ser idempotente. A mesma mensagem pode reaparecer depois de uma falha, então o efeito de negócio precisa ter uma chave de deduplicação no banco ou no provedor chamado.
::

## Cenário: pagamento confirmado e emissão de nota

Quando um webhook confirma um pagamento, a rota deve validar assinatura, gravar o evento canônico e responder rápido. Em seguida, ela envia uma mensagem para Queue. O consumer verifica se já processou aquele evento, chama o serviço fiscal e registra resultado. Se o serviço externo falhar temporariamente, a fila faz retry e, depois do limite, envia para DLQ para investigação.

Não coloque toda essa sequência no webhook. Um timeout do provedor fiscal não deveria fazer o gateway de pagamento reenviar a cobrança, nem deixar a pessoa sem resposta na tela.

```text
Webhook → valida + persiste → Queue → consumer idempotente → serviço externo
                                          └→ DLQ + alerta em falha definitiva
```

## Onde Workflow entra

Agora pense em um PIX que expira em 24 horas. Um Workflow pode registrar a sessão, dormir até o horário, confirmar se houve pagamento e executar a consequência certa. Se uma etapa já terminou, ela não precisa rodar de novo quando uma tentativa posterior falha. O estado fica persistido entre etapas.

Esse modelo também ajuda um processo de upload de vídeo: validar arquivo no R2, enviar para um provedor, aguardar webhook, registrar URL e avisar o Gestor. Cada etapa tem limite, retry e evidência de onde falhou.

## Preço sem surpresa

Queues cobra operações por blocos de 64 KB escritos, lidos ou deletados. Em geral, uma mensagem entregue custa três operações: write, read e delete. Workers Paid inclui 1 milhão de operações por mês e cobra US$ 0,40 por milhão adicional; retries acrescentam leituras. No plano Free, há 10 mil operações por dia e retenção de 24 horas.

Workflows compartilha preço de requests e CPU de Workers e adiciona estado e steps. Em julho de 2026, o plano Paid inclui 500 mil steps e 1 GB-mês de state, com cobrança anunciada para começar em 10 de agosto de 2026: US$ 0,80 por 100 mil steps adicionais e US$ 0,20 por GB-mês. Esperar em `sleep()` não consome CPU, mas estado retido entra na conta.

| Custo que cresce | Como controlar |
| --- | --- |
| retries de Queue | classifique erro transitório, faça DLQ e deduplicação |
| mensagens grandes | envie ID/referência, não payload desnecessário |
| steps de Workflow | agrupe trabalho coerente; não crie um step por detalhe irrelevante |
| state retido | guarde somente o necessário e diminua retenção quando possível |

::read-more{slug="cloudflare-workers-ai-custo" label="Continuar: onde IA entra em um fluxo assíncrono" placement="mid_content"}
## Prós e contras

Queue traz escala, retry e desacoplamento; em troca, exige idempotência, DLQ e observabilidade. Workflow traz processo durável e legível; em troca, exige modelagem de estado, passos pequenos e política de retenção. Nenhum dos dois é uma desculpa para executar ação financeira sem validação ou repetir mensagens externas sem controle.

## Checklist de implementação

- [ ] producer grava uma intenção ou evento canônico antes de enfileirar;
- [ ] mensagem tem ID idempotente e versão de schema;
- [ ] consumer trata cada mensagem individualmente, sem derrubar o batch inteiro;
- [ ] erros permanentes chegam à DLQ com contexto sem segredo;
- [ ] Workflow tem passos nomeados, timeout e condição de reentrada;
- [ ] métricas mostram atraso, retry, DLQ e taxa de sucesso;
- [ ] staging usa filas e workflows próprios.

## Perguntas frequentes

### Um Workflow substitui Queue?

Não. Um Workflow coordena uma instância de processo. Queue absorve eventos e distribui trabalho. É comum uma etapa de Workflow enviar uma mensagem ou uma Queue iniciar um Workflow.

### Por que um retry pode duplicar uma ação?

Porque a confirmação de sucesso pode se perder depois que o serviço externo executou a ação. Proteja o efeito com chave idempotente e registre o estado antes de repetir.

### Posso rodar cron em vez disso?

Cron é ótimo para varredura periódica. Para um processo ligado a um evento ou que precisa esperar um prazo individual, Queue e Workflow deixam o fluxo mais preciso.

### Fontes e leitura recomendada

- [Cloudflare Queues](https://developers.cloudflare.com/queues/)
- [Preços de Queues](https://developers.cloudflare.com/queues/platform/pricing/)
- [Cloudflare Workflows](https://developers.cloudflare.com/workflows/)
- [Preços de Workflows](https://developers.cloudflare.com/workflows/reference/pricing/)