Quem deve criar a fila: Consumidor ou Produtor? | RabbitMQ
- Quem deve criar a fila: Consumidor ou Produtor? | RabbitMQ
Resumo
| Item | 🟦 Produtor | 🟩 Consumidor |
|---|---|---|
| Conectar ao RabbitMQ | ✅ | ✅ |
| Declarar Exchange | ✅ (ou Infra) | ✅ (opcional) |
| Tipo de Exchange | ❌ | ❌ (contrato definido) |
| Criar Fila (Queue) | ❌ | ✅ |
| Definir durabilidade da fila | ❌ | ✅ |
| Definir TTL / DLQ / Retry | ❌ | ✅ |
| Criar Binding | ❌ | ✅ |
| Definir bindingKey | ❌ | ✅ |
| Publicar mensagens | ✅ | ❌ |
| Definir routingKey | ✅ | ❌ |
| Serializar mensagem | ✅ | ❌ |
| Garantir contrato da mensagem | ✅ | ❌ |
| Consumir mensagens | ❌ | ✅ |
| Ack / Nack | ❌ | ✅ |
| Controle de concorrência | ❌ | ✅ |
| Escalabilidade horizontal | ❌ | ✅ |
| Reprocessamento | ❌ | ✅ |
✅ Regra geral: o consumidor cria a fila
Por quê?
Porque a fila existe para atender o consumidor, não o produtor.
Motivos principais:
-
Desacoplamento O produtor não precisa saber quem vai consumir nem como a fila é configurada.
-
Configuração correta O consumidor sabe:
- se a fila é durável
- se usa dead-letter
- TTL
- prioridade
- tipo (classic, quorum, stream)
-
Evolução independente Consumidores podem mudar sem impactar produtores.
-
Segurança Produtores podem ter permissão apenas para publicar em exchanges, não para criar filas.
Fluxo recomendado (padrão RabbitMQ)



-
Consumidor
- Cria a fila
- Cria o binding com a exchange
-
Produtor
- Publica mensagens apenas na exchange
- Não conhece filas
❌ Por que o produtor não deve criar a fila?
- Ele não sabe como a fila deve se comportar
- Cria acoplamento forte
- Dificulta múltiplos consumidores
- Viola o princípio de responsabilidade única
O produtor produz eventos, não infraestrutura de consumo.
🟡 Quando o produtor pode criar a fila?
Há exceções controladas:
1. Sistemas simples ou legados
- Um único produtor e consumidor
- Infraestrutura pequena
2. Fila temporária (reply-to / RPC)
- O produtor cria uma fila exclusiva e temporária
- Exemplo: padrão RPC
3. Provisionamento centralizado
-
Infra criada por:
- scripts de DevOps
- Terraform / Ansible
- Helm / Kubernetes
-
Nem produtor nem consumidor criam dinamicamente
🏗️ Alternativa madura (ambiente corporativo)




| Componente | Responsável |
|---|---|
| Exchange | Infra / Plataforma |
| Fila | Consumidor |
| Binding | Consumidor |
| Publicação | Produtor |
📌 Regra de ouro
Quem consome a mensagem é quem define como ela deve ser armazenada.
Resumo rápido
- ✅ Consumidor cria a fila
- ✅ Produtor publica na exchange
- ❌ Produtor não deve conhecer filas
- 🟡 Infra pode ser criada por scripts (DevOps)
- 🟢 Exceções existem, mas devem ser conscientes