Message Queue
Request, Response vs Messaging
λλΆλΆ μΉ μλ²λ HTTP Req/Res λ°©μμ λ§μ΄ μ¬μ©νλλ°, λνμ μΌλ‘ REST APIκ° μ‘΄μ¬νλ€.
Req/Res λ°©μμ HTTP νν μ½μ κΈ°λ°μΌλ‘ ꡬνλκΈ° λλ¬Έμ Stateless νΉμ±μ κ°μ§κ³ μλ€.
νμ§λ§ ν΄λΌμ΄μΈνΈ-μλ² μ¬μ΄μ κ°ν βμμ‘΄μ±βμ΄ μ‘΄μ¬νλ©°, μλ²κ° μ€νμ€μ΄μ΄μΌ λ°μ΄ν° μ‘μμ μ΄ κ°λ₯νλ€.
λ, ν΄λΌμ΄μΈνΈλ μλ²μμ μλ΅μ΄ μ¬ λκΉμ§ λκΈ° νκ³ μλ€. μ¦, λκΈ°μ ν΅μ λ°©λ²μ΄λ€.
λ°λλ‘ HTTP λ°©μλ³΄λ€ λμ¨νκ² κ²°ν©νμ¬ λΉλκΈ° μμ€ν
ν΅ν© λ°©μμΈ λ©μμ§μ΄ μλ€.
λ©μμ§μ μ€κ° μμ€ν μ ν΅ν΄μ
λ°μ μ(publisher)μμμμ μ(subscriber)λ‘ λ°μ΄ν°λ₯Ό μ μ‘

κ·Έλ¦Όμ²λΌ μ€κ°μ λ©μμ§ μμ€ν μ ν΅ν΄ μ μ‘μ νκΈ° λλ¬Έμ μ±λλ§ μ°κ²°λμ΄ μμΌλ©΄ μλ²λ λ°μ΄ν°λ₯Ό λ°λ μμ μ(ν΄λΌμ΄μΈνΈ)κ° λκ΅°μ§ μ νμκ° μλ€.
μ΄λ¬ν λ©μμ§ μμ€ν μλ λνμ μΌλ‘ Rabbit MQ, Active MQ, Kafka λ±μ΄ μλ€.
λ©μμ§ νλ«νΌμ λ©μμ§ λΈλ‘컀, μ΄λ²€νΈ λΈλ‘μ»€λ‘ λλ μ μλ€.
λ©μμ§ λΈλ‘컀
λ©μμ§λ₯Ό λ°μμ μ²λ¦¬νκ³ λλ©΄ μ¦μ, μ§§μ μκ°λ΄μ μμ λλ ꡬ쑰μ΄λ€. μ¦, λ©μμ§λ₯Ό 보λ΄κ³ μ²λ¦¬ ν μμ νλ€.
redis, Rabbit MQκ° ν΄λΉνλ€.
μ΄λ²€νΈ λΈλ‘컀
μ΄λ²€νΈ, λ©μμ§λΌκ³ λΆλ₯΄λ λ μ½λλ₯Ό μΈλ±μ€λ₯Ό ν΅ν΄ κ°λ³ μμΈμ€λ₯Ό κ΄λ¦¬νλ€. (??)
μ 무μ νμν μκ°λμ μ΄λ²€νΈλ₯Ό 보쑴ν μ μλ€. λ°μ΄ν°λ₯Ό μ²λ¦¬νκ³ μμ νμ§ μλλ€.
Kafkaκ° ν΄λΉνλ€.
Message Queuing (λ©μμ§ νμ) vs pub/sub
νμ μμ€ν κ³Ό pub/sub μμ€ν μ λΆμ° μμ€ν μμ λ©μμ§λ₯Ό μ λ¬νλ λ κ°μ§ μ£Όμ ν¨ν΄μ΄λ€.
βλ©μμ§β μμ€ν μ ꡬννλ λ°©λ²μ λνμ μΌλ‘ λ κ°μ§κ° μ‘΄μ¬νλ€.
λ©μμ§ νμ (Point-to-Point Channel)
λ©μμ§ νμμ Point-to-Point Channel λ°©μμΌλ‘, ν μμ μ(Consumer)λ§ λ©μμ§λ₯Ό μμ ν μ μλ€.
μλ²μμ νμ λ©μμ§λ₯Ό μ λ¬νλ©΄ ν΄λΌμ΄μΈνΈλ νμμ νλμ© κΊΌλ΄μ μμ νλ€.
μ¦, 1:1 ν΅μ μΌλ‘ μ΄λ£¨μ΄μ§λ€.
μλΉμκ° μ²λ¦¬λ₯Ό μλ£νκ³ λͺ μμ μΌλ‘ μμ ν λκΉμ§ νμ λ¨μμλλ€. μ΄λ λ©μμ§κ° μμ€λμ§ μλλ‘ λ³΄μ₯νλ€.
Publish/Subscribe
νμκ³Ό λ°λλ‘ pub/subμ μμ μ(ν΄λΌμ΄μΈνΈ) λͺ¨λμκ² λ©μμ§λ₯Ό μ μ‘νλ€.
publisher(λ°νμ)κ° νΉμ Topicμ λ©μμ§λ₯Ό μ λ¬νλ©΄, ν΄λΉ Topicμ ꡬλ ν subscriber(ν΄λΌμ΄μΈνΈ) λͺ¨λμκ² λ©μμ§κ° μ μ‘λλ€.
λΈλ‘λμΊμ€ν μ μ ν©ν λ°©μμ΄λ€.
Last updated