Skip to Content
Go Realm v1 is released 🎉
RabbitMQPage

RabbitMQ Learning Track

RabbitMQ āĻŦāĻžāĻ‚āϞāĻžā§Ÿ: ā§§ā§Ļ āĻĻāĻŋāύ⧇ Go āĻĻāĻŋā§Ÿā§‡ āĻļ⧇āĻ–āĻžāϰ āϰ⧋āĻĄāĻŽā§āϝāĻžāĻĒ

āĻāχ āĻŸā§āĻ°ā§āϝāĻžāĻ•āϟāĻŋ āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇ āϝāĻžāϤ⧇ āϤ⧁āĻŽāĻŋ RabbitMQ-āĻāϰ āĻĨāĻŋāĻ“āϰāĻŋ, Go integration, production mindset, āĻāĻŦāĻ‚ system design impact āĻāĻ•āϏāĻžāĻĨ⧇ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰ⧋āĨ¤ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āĻĨāĻžāĻ•āĻŦ⧇ diagram, table, code, mini quiz, āφāϰ hands-on taskāĨ¤

RabbitMQ āϕ⧀?

RabbitMQ āĻšāϞ⧋ āĻāĻ•āϟāĻŋ message brokerāĨ¤ āĻāϟāĻŋ producer āĻĨ⧇āϕ⧇ message āύāĻŋā§Ÿā§‡ queue-āϤ⧇ āϰāĻžāϖ⧇, rule āĻ…āύ⧁āϝāĻžā§Ÿā§€ route āĻ•āϰ⧇, āĻāĻŦāĻ‚ consumer-āϕ⧇ deliver āĻ•āϰ⧇āĨ¤ āĻāϰ āĻĢāϞ⧇ service āϗ⧁āϞ⧋ tightly coupled āύāĻž āĻšā§Ÿā§‡ asynchronous āĻāĻŦāĻ‚ resilient āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

RabbitMQ Core Architecture

āϕ⧇āύ Go backend-āĻāϰ āϏāĻžāĻĨ⧇ RabbitMQ āĻļ⧇āĻ–āĻž āĻĻāϰāĻ•āĻžāϰ?

āĻŦāĻŋāώ⧟āϕ⧇āύ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ
Background jobsEmail, report generation, image processing queue-āϤ⧇ āĻĒāĻžāĻ āĻžāύ⧋ āϝāĻžā§Ÿ
DecouplingAPI service āφāϰ worker service āφāϞāĻžāĻĻāĻž āϰāĻžāĻ–āĻž āϝāĻžā§Ÿ
Reliabilityretry, ack, dead-letter queue āĻĻāĻŋā§Ÿā§‡ fault tolerance āĻŦāĻžā§œā§‡
Throughputburst traffic absorb āĻ•āϰāĻž āϝāĻžā§Ÿ
Go fitgoroutine + channels mindset āĻĨ⧇āϕ⧇ RabbitMQ āĻŦ⧁āĻāϤ⧇ āϏ⧁āĻŦāĻŋāϧāĻž āĻšā§Ÿ

āĻāχ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āĻžāϰ āϜāĻ¨ā§āϝ?

  • āϝāĻžāϰāĻž Go backend āϞāĻŋāĻ–āϛ⧇ āĻāĻŦāĻ‚ queue-based architecture āĻŦ⧁āĻāϤ⧇ āϚāĻžā§Ÿ
  • āϝāĻžāϰāĻž pub/sub, async job processing, retry, DLQ production-grade āĻ­āĻžāĻŦ⧇ āĻļāĻŋāĻ–āϤ⧇ āϚāĻžā§Ÿ
  • āϝāĻžāϰāĻž āĻļ⧁āϧ⧁ tutorial āύāĻž, reasoning + implementation āĻĻ⧁āĻŸā§‹āχ āϚāĻžā§Ÿ

āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āφāϗ⧇ āϝāĻž āϜāĻžāύāĻž āĻ­āĻžāϞ⧋

  • Go basics: struct, goroutine, context, package layout
  • Docker āĻŦāĻž local service run āĻ•āϰāĻžāϰ āĻŦ⧇āϏāĻŋāĻ•
  • HTTP API āĻāĻŦāĻ‚ JSON payload āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϧāĻžāϰāĻŖāĻž

ā§§ā§Ļ āĻĻāĻŋāύ⧇āϰ āĻļ⧇āĻ–āĻžāϰ āĻĒāĻĨ

āĻĻāĻŋāύāĻĢā§‹āĻ•āĻžāϏOutcome
Day 1Broker, producer, consumer, queue, exchangeRabbitMQ mental model āϤ⧈āϰāĻŋ āĻšāĻŦ⧇
Day 2Setup, UI, first Go producer/consumerāϞ⧋āĻ•āĻžāϞāĻŋ message āĻĒāĻžāĻ āĻžāύ⧋-āύ⧇āĻ“ā§ŸāĻž āĻĒāĻžāϰāĻŦ⧇
Day 3ack, nack, requeue, lifecyclemessage loss āĻāĻŦāĻ‚ duplicate risk āĻŦ⧁āĻāĻŦ⧇
Day 4direct, fanout, topic, headersrouting strategy āĻŦāĻžāĻ›āϤ⧇ āĻĒāĻžāϰāĻŦ⧇
Day 5durable queue, persistent messagerestart survival āĻŦ⧁āĻāĻŦ⧇
Day 6work queues, prefetch, fair dispatchworker pattern implement āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇
Day 7pub/sub, event-driven designbroadcast āĻāĻŦāĻ‚ event thinking develop āĻšāĻŦ⧇
Day 8retry queue, DLQ, poison messagefailure handling safer āĻšāĻŦ⧇
Day 9connection management, idempotency, monitoringproduction mindset āϤ⧈āϰāĻŋ āĻšāĻŦ⧇
Day 10full mini projectend-to-end RabbitMQ + Go flow āĻŦ⧁āĻāĻŦ⧇

āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāχ āϕ⧋āĻ°ā§āϏāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇

āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ⧇āϰ lesson āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āφāϗ⧇ āύāĻŋāĻœā§‡āϕ⧇ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰ⧋: āφāϜ āφāĻŽāĻŋ āϕ⧋āύ architectural pain solve āĻ•āϰāϤ⧇ āĻļāĻŋāĻ–āĻ›āĻŋ?

  • Code block āĻļ⧁āϧ⧁ āĻĒ⧜āĻŦ⧇ āύāĻž, āĻŽāĻžāύāϏāĻŋāĻ•āĻ­āĻžāĻŦ⧇ execute āĻ•āϰāĻŦ⧇āĨ¤
  • āĻĒā§āϰāϤāĻŋāϟāĻŋ diagram āĻĻ⧇āϖ⧇ message āϕ⧋āĻĨāĻžā§Ÿ āϝāĻžāĻšā§āϛ⧇ āϤāĻž āύāĻŋāĻœā§‡ explain āĻ•āϰāĻŦ⧇āĨ¤
  • Quiz-āĻ āϭ⧁āϞ āĻšāϞ⧇ explanation āĻĒā§œā§‡ āφāĻŦāĻžāϰ decision āύ⧇āĻŦ⧇āĨ¤
  • Hands-on task-āĻ naming, routing key, ack strategy āĻŦāĻĻāϞ⧇ experiment āĻ•āϰāĻŦ⧇āĨ¤

Real-world Motivation

Situation: āĻāĻ•āϟāĻŋ e-commerce API order create āĻ•āϰāĻžāϰ āĻĒāϰ payment, inventory, email notification, analytics event āϏāĻŦāĻ•āĻŋāϛ⧁ āĻāĻ•āχ request-āĻ synchronously āĻ•āϰāϛ⧇āĨ¤

Goal: response time āĻ•āĻŽāĻžāύ⧋, failure isolate āĻ•āϰāĻž, āĻāĻŦāĻ‚ services loosely coupled āϰāĻžāĻ–āĻžāĨ¤

What to think about:

  • āϏāĻŦ āĻ•āĻžāϜ āĻ•āĻŋ user response-āĻāϰ āφāϗ⧇ āĻĻāϰāĻ•āĻžāϰ?
  • āϕ⧋āύ āĻ•āĻžāϜāϗ⧁āϞ⧋ eventually consistent āĻšāϤ⧇ āĻĒāĻžāϰ⧇?
  • āϕ⧋āύ failure retry āĻ•āϰāĻž āύāĻŋāϰāĻžāĻĒāĻĻ, āφāϰ āϕ⧋āύāϟāĻž manual review-āϤ⧇ āϝāĻžāĻŦ⧇?
āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āϏāĻŽāĻžāϧāĻžāύ āĻĻ⧇āϖ⧁āύ

RabbitMQ order event publish āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰāĻŦ⧇āĨ¤ API āĻļ⧁āϧ⧁ order accepted āĻ•āϰāĻŦ⧇āĨ¤ Payment, notification, analytics āφāϞāĻžāĻĻāĻž consumer āĻĻāĻŋā§Ÿā§‡ process āĻšāĻŦ⧇āĨ¤ āĻĢāϞ⧇ request fast āĻĨāĻžāĻ•āĻŦ⧇ āĻāĻŦāĻ‚ failure isolation āĻ…āύ⧇āĻ• āĻ­āĻžāϞ⧋ āĻšāĻŦ⧇āĨ¤

āĻāχ āĻŸā§āĻ°ā§āϝāĻžāϕ⧇āϰ design principle

āĻļ⧇āώ āĻšāϞ⧇ āϤ⧁āĻŽāĻŋ āϕ⧀ āĻĒāĻžāϰāĻŦ⧇?

  • RabbitMQ-āĻ āϕ⧋āύ exchange type āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϤāĻž reason āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇
  • Go āĻĻāĻŋā§Ÿā§‡ clean producer/consumer āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰāĻŦ⧇
  • ack, retry, requeue, DLQ decision āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāĻŦ⧇
  • work queue āĻŦāύāĻžāĻŽ pub/sub use case āφāϞāĻžāĻĻāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇
  • production-ready messaging system-āĻāϰ common pitfalls āϚāĻŋāύāϤ⧇ āĻĒāĻžāϰāĻŦ⧇

āĻĒāϰ⧇āϰ lesson āĻĨ⧇āϕ⧇ āφāĻŽāϰāĻž mental model build āĻļ⧁āϰ⧁ āĻ•āϰāĻŦāĨ¤