Pular para conteúdo

Message broker

TLDR: o conceito geral de message broker, e a comparação entre RabbitMQ/Kafka/NATS, já está explicado em detalhe na documentação da infrastructure. Esta página cobre só um ângulo que aquela não cobre: os dois padrões de uso, RPC e fire-and-forget.

RPC vs. fire-and-forget

Dois padrões comuns de uso de um message broker, independente de qual ferramenta (RabbitMQ, Kafka, NATS):

  • RPC (request/response): o produtor publica uma mensagem de requisição numa fila e espera uma resposta numa fila separada, geralmente com timeout.
  • Fire-and-forget: o produtor publica e segue em frente, sem esperar confirmação nem resposta.
flowchart TD
    subgraph "RPC"
        RPC_P["Produtor"] -- "publica request" --> RPC_Q1["fila request"] --> RPC_C["Consumidor"]
        RPC_C -- "publica response" --> RPC_Q2["fila response"] --> RPC_P
    end
    subgraph "Fire-and-forget"
        FF_P["Produtor"] -- "publica, não espera" --> FF_Q["fila"] --> FF_C["Consumidor"]
    end

RPC serve quando quem publica precisa do resultado antes de continuar. Fire-and-forget serve quando o produtor só precisa garantir que a mensagem foi entregue, sem depender do resultado do processamento pra seguir em frente.

Pra ir além

Mensageria e streaming, na documentação da infrastructure, cobre o conceito geral de message broker e compara RabbitMQ, Kafka e NATS. O tutorial oficial do RabbitMQ cobre os padrões de troca de mensagem com exemplo executável em várias linguagens.