📊 Capítulo 14: Mensageria com RabbitMQ & Kafka
Especialização Backend com Go & Gin Gonic
🗺️ Processamento de Eventos em Background com Goroutines
flowchart LR
GIN["Gin Controller (POST /checkout)"]
--> |"Publica Evento (RabbitMQ / Kafka)"| BROKER["Broker de Mensagens"]
GIN --> CLIENT["Responde HTTP 202 Accepted Imediatamente!"]
BROKER --> |"Consome Mensagem"| WORKER["Go Worker (Goroutine Dedicada)"]
WORKER --> PROCESS["Processamento de Pagamento / Emissão de Nota"]
style GIN fill:#ede7f6,stroke:#512da8,stroke-width:2px
style BROKER fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style CLIENT fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
style WORKER fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style PROCESS fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
🎯 Slide 1: Publicando Mensagens no RabbitMQ com amqp091-go
err = ch.PublishWithContext(ctx,
"exchange_pedidos", // Exchange
"pedidos.novos", // Routing key
false, // Mandatory
false, // Immediate
amqp.Publishing{
ContentType: "application/json",
Body: payloadBytes,
},
)
🎯 Slide 2: Consumindo com Alta Concorrência no Go
- O modelo de concorrência nativo do Go (Goroutines e Canais) permite criar pools de consumidores capazes de processar centenas de milhares de mensagens por segundo com baixíssimo overhead de memória!
🎯 Slide 3: Apache Kafka com segmentio/kafka-go
r := kafka.NewReader(kafka.ReaderConfig{
Brokers: []string{"localhost:9092"},
Topic: "pedidos-topic",
GroupID: "grupo-processamento",
MinBytes: 10e3, // 10KB
MaxBytes: 10e6, // 10MB
})
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim