๊ฐœ๋ฐœ.log/rabbitMQ

[RabbitMQ] ์ฒ˜์Œ ๋งŒ๋‚˜๋Š” rabbitMq + springboot + stomp : Message broker ์ดํ•ด

๊ฐœ๋ฐœํ•˜๋Š” ์ฃผ๋””์”จ 2023. 4. 18. 09:49

RabbitMQ๋ž€?

๋ฉ”์‹œ์ง€ ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด(MOM)๋กœ์„œ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ๋ฉ”์‹œ์ง€๋ฅผ ์•ˆ์ •์ ์ด๊ณ  ํ™•์‹คํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค. RabbitMQ๋Š” ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋ฉฐ, ์ฃผ๋กœ AMQP(Advanced Message Queuing Protocol) ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค. AMQP๋Š” ๋ฉ”์‹œ์ง€ ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด ์‹œ์Šคํ…œ์—์„œ ์•ˆ์ •์ ์ธ ๋ฉ”์‹œ์ง€ ์ „์†ก์„ ์œ„ํ•œ ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ๋กœ, RabbitMQ๋Š” ์ด ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.

RabbitMQ๋Š” ํ(Queue)์™€ ๊ตํ™˜๊ธฐ(Exchange)๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”๋ฐ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ์— ๋ณด๋‚ด๋Š” ๊ฒƒ์„ '๋ฉ”์‹œ์ง€ ๋ฐœํ–‰(Publish)'์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ํ๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ '๋ฉ”์‹œ์ง€ ๊ตฌ๋…(Subscribe)'์ด๋ผ๊ณ  ํ•œ๋‹ค. RabbitMQ๋Š” ์ด๋Ÿฌํ•œ ๋ฐœํ–‰-๊ตฌ๋… ๋ชจ๋ธ์„ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

RabbitMQ๋Š” ์ด๋Ÿฌํ•œ ๋ฉ”์‹œ์ง€ ์ „์†ก ์‹œ์Šคํ…œ์„ ํ†ตํ•ด, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ์—ฐ๋™ ๋“ฑ์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. 

 


 

RabbitMq๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ / ํ•„์š”ํ•œ ๊ฒฝ์šฐ

๊ทผ๋ณธ์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์— ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ”” ์š”์ฒญ์„ ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•  ๋•Œ
๐Ÿ”” ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ๊ธธ ๋•Œ
๐Ÿ”” ๋งŽ์€ ์ž‘์—…์ด ์š”์ฒญ๋˜์–ด ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•  ๋•Œ
๐Ÿ”” ํ•ด๋‹นํ•˜๋Š” ์š”์ฒญ์„ ๋‹ค๋ฅธ API์—๊ฒŒ ์œ„์ž„ํ•˜๊ณ  ๋น ๋ฅธ ์‘๋‹ต์„ ํ•  ๋•Œ

 


Message Broker

rabbitMq์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํ•  ๋•Œ
message broker ๋ผ๋Š” ๋ง์„ ๋นผ๊ณ  ๋งํ•  ์ˆ˜ ์—†๋‹ค.

Message Broker๊ฐ€ ๋„๋Œ€์ฒด ๋ญ˜๊นŒ?

 

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ํ†ต์‹ ์„ ์ค‘๊ฐœํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด์ด๋‹ค. ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” ๋ฐœ์‹ ์ž๊ฐ€ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ์ž๊ฐ€ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘๊ฐœํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋ฐœ์‹ ์ž๋Š” ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ณ , ์ˆ˜์‹ ์ž๋Š” ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ๋…ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ํ†ต์‹ ์„ ๋Š์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ์‹œํ‚ค๊ณ , ๋ฉ”์‹œ์ง€์˜ ์ „์†ก๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” RabbitMQ, Apache Kafka, ActiveMQ ๋“ฑ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋‹ค.

 

 


RabbitMq ํŠน์ง•

 

๋ฉ”์‹œ์ง€ ์ง€ํ–ฅ(Message-oriented)

RabbitMQ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

๋™๊ธฐ ๋ฐ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ์ง€์›

RabbitMQ๋Š” ํ์™€ ๊ตํ™˜๊ธฐ๋ฅผ ์ด์šฉํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

ํ”„๋กœ๋“€์„œ์™€ ์ปจ์Šˆ๋จธ๋ฅผ ์œ„ํ•œ API ์ œ๊ณต

RabbitMQ๋Š” Java, .NET, Python, Ruby, PHP ๋“ฑ ๋‹ค์–‘ํ•œ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ API๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

๋ฉ€ํ‹ฐํ”„๋กœํ† ์ฝœ ์ง€์›

RabbitMQ๋Š” AMQP, STOMP, MQTT ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•œ๋‹ค.

 

ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ง€์›

RabbitMQ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•˜์—ฌ ํ™•์žฅ์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

 

 


RabbitMq ์ค‘์š”๊ฐœ๋…

์•„๋ž˜ ๋‚ด์šฉ์€ rabbitMq manager UI ๋กœ, ์ถ”ํ›„ ํฌ์ŠคํŒ… ๋  ๋‚ด์šฉ์ด๋ฏ€๋กœ ์ง€๊ธˆ์€ rabbitMq์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ๋งŒ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

 

1) Producer
๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  RabbitMQ์— ๋ณด๋‚ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์‹œ์Šคํ…œ์„ ๋งํ•œ๋‹ค.

 


 

 

2) Consumer
RabbitMQ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์‹œ์Šคํ…œ์„ ๋งํ•œ๋‹ค.

 



3) Queue
๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ๋ฒ„ํผ๋กœ, Producer์—์„œ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๋Š” Queue์— ์ €์žฅ๋˜์–ด Consumer์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค. 

 

Queue ์†์„ฑ

  • Name
    ํ์˜ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ํ๋ฅผ ์‹๋ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
  • Durable
    ํ๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์ง€์†๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ true๋กœ ์„ค์ •๋œ๋‹ค. ์ด ๊ฒฝ์šฐ, RabbitMQ๊ฐ€ ์ค‘๋‹จ๋˜๋”๋ผ๋„ ํ๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • Auto-Delete
    ์†Œ๋น„์ž๊ฐ€ ๋ชจ๋‘ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜๋ฉด, ํ๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•œ๋‹ค.
  • Exclusive
    ํ๊ฐ€ ํ˜„์žฌ ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ true๋กœ ์„ค์ •ํ•œ๋‹ค. ๋‹ค๋ฅธ ์—ฐ๊ฒฐ์—์„œ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • Arguments
    ํด๋ผ์ด์–ธํŠธ์—์„œ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, x-message-ttl ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๊ฐ€ ํ์— ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Maximum priority
    ํ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์‹œ์ง€์˜ ์ตœ๋Œ€ ์šฐ์„  ์ˆœ์œ„ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • Maximum length
    ํ๊ฐ€ ํฌํ™” ์ƒํƒœ์— ๋น ์ง„ ๊ฒฝ์šฐ ํ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฉ”์‹œ์ง€ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ์†์„ฑ์ด๋‹ค.
  • Overflow behavior
    ํ์˜ ์šฉ๋Ÿ‰ ํ•œ๊ณ„์— ๋„๋‹ฌํ•˜๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์„ค์ •์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, drop-head ๋˜๋Š” reject-publish ๋“ฑ์˜ ์˜ต์…˜์ด ์žˆ๋‹ค.

 

4) Exchange
Producer์—์„œ ์ƒ์„ฑํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ Queue๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋ฃฐ์„ ์ •์˜ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ RabbitMQ์—๋Š” Direct, Fanout, Topic, Headers ๋“ฑ์˜ ์—ฌ๋Ÿฌ Exchange ์œ ํ˜•์ด ์žˆ๋‹ค. rabbitMq ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” Exchange๋Š” (AMQP default), amq.* ๋กœ ์‹œ์ž‘ํ•˜๋Š” exchange๋“ค์ด๋‹ค. 

 

Exchange Type

  • Direct Exchange
    Routing Key์™€ Binding Key๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•˜๋Š” ํ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๋Š” ํ•˜๋‚˜์˜ ํ๋กœ ์ „๋‹ฌ๋œ๋‹ค.
  • Fanout Exchange
    ๋ชจ๋“  ๋ฐ”์ธ๋”ฉ๋œ ํ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์—ฌ๋Ÿฌ ํ๋กœ ์ „๋‹ฌ๋œ๋‹ค.
  • Topic Exchange
    Binding Key์™€ Routing Key๊ฐ€ ํŒจํ„ด ๋งค์นญ๋˜๋Š” ๋ชจ๋“  ํ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    Binding Key๋Š” '.'์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋‹จ์–ด๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, Routing Key๋Š” Binding Key์™€ ๋™์ผํ•œ ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  • Headers Exchange
    ํ—ค๋”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    ์ผ์น˜ํ•˜๋Š” ํ—ค๋”๋ฅผ ๊ฐ€์ง„ ํ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

 

Exchange ์†์„ฑ

  • Name
    Exchange์˜ ์ด๋ฆ„์ด๋ฉฐ, ์œ ์ผํ•ด์•ผ ํ•œ๋‹ค.
  • Type
    Exchange์˜ ์ข…๋ฅ˜๋กœ์„œ Direct, Fanout, Topic, Headers ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Durability
    Exchange์˜ ์ง€์†์„ฑ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋ฉฐ, true๋กœ ์„ค์ •ํ•˜๋ฉด RabbitMQ๊ฐ€ ์žฌ์‹œ์ž‘ํ•˜๋”๋ผ๋„ Exchange๊ฐ€ ์œ ์ง€๋œ๋‹ค.
  • Auto-delete
    Exchange์˜ ์ž๋™ ์‚ญ์ œ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. true๋กœ ์„ค์ •ํ•˜๋ฉด Exchange์— ๋ฐ”์ธ๋”ฉ๋œ ํ๊ฐ€ ์—†์„ ๋•Œ Exchange๊ฐ€ ์‚ญ์ œ๋œ๋‹ค.
  • Arguments
    Exchange์˜ ์ถ”๊ฐ€์ ์ธ ์ธ์ˆ˜์ด๊ณ , ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

 


5) Binding
Exchange์™€ Queue ๊ฐ„์— ์—ฐ๊ฒฐ์„ ๋งบ์–ด์ฃผ๋Š” ๊ตฌ์„ฑ ์š”์†Œ์ด๋‹ค. Binding์—๋Š” Exchange ์œ ํ˜•, ๋ผ์šฐํŒ… ํ‚ค ๋ฐ Queue๊ฐ€ ํฌํ•จ๋œ๋‹ค. Exchange๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœํ–‰๋˜๋Š” ์žฅ์†Œ์ด๊ณ , Queue๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„๋“ค์ด๋Š” ์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ์ฆ‰, Binding์€ Exchange์—์„œ ๋ฐœํ–‰๋œ ๋ฉ”์‹œ์ง€๊ฐ€ ์–ด๋–ค Queue์— ์ „๋‹ฌ๋˜์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ๋‹ค์Œ์€ Binding์— ํฌํ•จ๋˜๋Š” ์ •๋ณด์ด๋‹ค.

  • Exchange name: Binding์ด ์ ์šฉ๋˜๋Š” Exchange์˜ ์ด๋ฆ„
  • Exchange Type : Exchange์˜ ํƒ€์ž…
  • Routing key: ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋‹ฌ๋  Queue๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’
  • Queue name: Binding์ด ์ ์šฉ๋˜๋Š” Queue์˜ ์ด๋ฆ„

 


 


6) Virtual Host
RabbitMQ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Virtual Host๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Virtual Host๋Š” Queue, Exchange, Binding ๋ฐ ์‚ฌ์šฉ์ž๋ฅผ ๊ฒฉ๋ฆฌ์‹œํ‚ค๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ฐœ๋…์ด๋‹ค.


 

7) Connection
Producer ๋˜๋Š” Consumer๊ฐ€ RabbitMQ์™€ ํ†ต์‹ ํ•˜๋Š” TCP ์—ฐ๊ฒฐ์ด๋‹ค.


 

8) Channel
TCP ์—ฐ๊ฒฐ ๋‚ด์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฐ€์ƒ ์—ฐ๊ฒฐ๋กœ, ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ Connection ๋‚ด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ Channel์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฐ๊ฒฐ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•œ๋‹ค.

 

 

 

์ง€๊ธˆ๊นŒ์ง€ rabbitMq๊ฐ€ ์–ด๋–ค ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด์ œ๋ถ€ํ„ด ์›ํ•˜๋Š” ๋ชฉํ‘œ์— ๋งž์ถ”์–ด rabbitMq๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ์ง€ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.