π¬
Message Queue
νλ₯Ό ν΅ν λΉλκΈ° μμ μ²λ¦¬
Message Queueλ Pub/Subμ λ¬λ¦¬ λ©μμ§κ° μ νν νλμ μλΉμμκ²λ§ μ λ¬λ©λλ€(μ λμ ). νκ° λ²νΌ μν μ νμ¬ μμ°μμ μλΉμμ μ²λ¦¬ μλ μ°¨μ΄λ₯Ό ν‘μνκ³ , μλΉμκ° λ€μ΄λμ΄λ λ©μμ§κ° νμ 보쑴λ©λλ€.
ꡬ쑰 λ€μ΄μ΄κ·Έλ¨
π
Producer
λ©μμ§ μμ°μ
β enqueue
→
π¬
Message Queue
msg3
msg2
msg1
FIFO →
β‘ dequeue
→
βοΈ
Consumer A
β’ μ²λ¦¬ + ACK
βοΈ
Consumer B
λκΈ° μ€
Point-to-Point: κ° λ©μμ§λ μ νν νλμ Consumerλ§ μ²λ¦¬
νλ¦ μ€λͺ
- Producerκ° λ©μμ§λ₯Ό νμ enqueue
- λ©μμ§κ° νμ μ μ₯ (FIFO μμ λκΈ°)
- Consumerκ° λ©μμ§λ₯Ό dequeueνμ¬ μ²λ¦¬
- μ²λ¦¬ μλ£ ν ACK μ μ‘, νμμ λ©μμ§ μ κ±°
λμ νλ¦
1
μμ°μ(Producer)κ° λ©μμ§λ₯Ό νμ enqueue
2
λ©μμ§κ° νμ μ μ₯λμ΄ λκΈ° (FIFO)
3
μλΉμ(Consumer)κ° νμμ λ©μμ§λ₯Ό dequeue
4
μλΉμκ° μ²λ¦¬ μλ£ ν ACK μ μ‘, νμμ λ©μμ§ μ κ±°
μ₯μ
- ✓ λ©μμ§ μ μ€ λ°©μ§ (μμμ±)
- ✓ μ²λ¦¬ μλ μ°¨μ΄ ν‘μ (λ²νΌ)
- ✓ μ€ν¨ μ μ¬μ²λ¦¬ κ°λ₯
- ✓ μλΉμ μν νμ₯ μ©μ΄
λ¨μ
- ✗ μ§μ° λ°μ (λΉλκΈ°)
- ✗ ν λͺ¨λν°λ§ νμ
- ✗ λ©μμ§ μμ 보μ₯ μ΄λ €μΈ μ μμ
- ✗ Dead Letter Queue κ΄λ¦¬ νμ
μ¬μ© μ¬λ‘
Sidekiq / Resque (Rails λ°±κ·ΈλΌμ΄λ μ‘)
RabbitMQ
AWS SQS
μ΄λ©μΌ λ°μ‘ ν
μ΄λ―Έμ§/λμμ μΈμ½λ© ν