Skip to main content

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:

  1. Desacoplamento O produtor não precisa saber quem vai consumir nem como a fila é configurada.

  2. Configuração correta O consumidor sabe:

    • se a fila é durável
    • se usa dead-letter
    • TTL
    • prioridade
    • tipo (classic, quorum, stream)
  3. Evolução independente Consumidores podem mudar sem impactar produtores.

  4. Segurança Produtores podem ter permissão apenas para publicar em exchanges, não para criar filas.


Fluxo recomendado (padrão RabbitMQ)

Image

Image

Image

Image

  1. Consumidor

    • Cria a fila
    • Cria o binding com a exchange
  2. 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?

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)

Image

Image

Image

Image

ComponenteResponsável
ExchangeInfra / Plataforma
FilaConsumidor
BindingConsumidor
PublicaçãoProdutor

📌 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