Network-AMQP
๐ฟ AMQP ํต์
Advanced Message Queing Protocal์ ์ฝ์๋ก ํํ ์๊ณ ์์ MQ์ ์คํ์์ค์ ๊ธฐ๋ฐํ ํ์ค ํ๋กํ ์ฝ
- ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ๊ฑด erlang๊ณผ ์๋ฐ์ ๊ธฐ๋ฐ์ ๋ RabbitMQ ___
๐ฟ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
- ์์ฉํ๋ MQ ์ ํ๋ค
- ๋๋ถ๋ถ ํ๋ซํผ ์ข ์์ : ์๋ก ๋ค๋ฅธ ์๋น์ค ๊ฐ์ ๋ฉ์์ง๋ฅผ ๊ตํํ๊ธฐ ์ํด์๋ ๋ฉ์ธ์ง ํฌ๋ฉง ์ปจ๋ฒ์ ์ ํตํ ๋ฉ์์ง ๋ธ๋ฆฟ์ง๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์์คํ ์์ฒด๋ฅผ ํตํฉํ ํ์๊ฐ ์์์
- MQ๋ ๊ธ์ต ์ชฝ์์ ๋ง์ด ์ฌ์ฉ๋จ
- ์ด๋ฌํ ์ฝ์ ์ ์ฌ์ฉ ๋ณด์ํ๋ ๊ฒ์ด AMQP
- ์๋ก ๋ค๋ฅธ ์์คํ ๊ฐ์ ์ต๋ํ ํจ์จ์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ๊ตํํ๊ธฐ ์ํ MQ ํ๋กํ ์ฝ
- ๋ฒค๋์ ์ข
์๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ์ถฉ์กฑ
- ๋ชจ๋ broker, client๋ค์ ๋๊ฐ์ ๋ฐฉ์์ผ๋ก ๋์ํ ๊ฒ
- ๋คํธ์์์ผ๋ก ์ ์ก๋๋ ๋ช ๋ น์ด๋ค์ ํ์คํ
- ํ๋ก๊ทธ๋จ ์ธ์ด ์ค๋ฆฝ์ ___
๐ฟ AMQP Routing model
Exchange
publisher๋ก ๋ถํฐ ์์ ํ ๋ฉ์์ง๋ฅผ ์ ์ ํ ํ ๋๋ ๋ค๋ฅธ exchange๋ก ๋ถ๋ฐฐํ๋ ๋ผ์ฐํฐ ๊ธฐ๋ฅ์ ํ๋ค.
- Exchange๋ ์์ ํ ๋ฉ์์ง๋ฅผ ๋ถ๋ฐฐํ๊ธฐ์ํด Exchange Type์ด๋ผ๋ ๋ผ์ฐํ
์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ
- ๋ธ๋ก๊ฑฐ๋ ์ฌ๋ฌ๊ฐ์ Exchange Type์ ๊ฐ์ง๋๋ค.
- Exchange Type์ ๋ฐ์ ๋ฉ์์ง๋ฅผ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ๋ผ์ฐํ
ํ ์ง ๊ฒฐ์ ํ๋๊ฒ
- Binding์ ์ด๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก ๊ฒฐ์ ๋ ๋ฉ์์ง๋ฅผ ์ด๋ Queue์ ์ ๋ฌํ ์ง ๊ฒฐ์ ํ๋ Routing Table
Exchange Type
ํ์ | ์ค๋ช | ํน์ง |
---|---|---|
Direct | Routing key๊ฐ ์ ํํ ์ผ์นํ๋ Queue์ ๋ฉ์์ง ์ ์ก | Unicast |
Topic | Routing key ํจํด์ด ์ผ์นํ๋ Queue์ ๋ฉ์์ง ์ ์ก | Multicast |
Headers | [key:value]๋ก ์ด๋ฃจ์ด์ง header ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ผ์นํ๋ queue์ ์ ์ก | Multicast |
Fanout | ํด๋น Exchange์ ๋ฑ๋ก๋ ๋ชจ๋ Queue์ ๋ฉ์ธ์ง ์ ์ก | BroadCast |
Direct Exchange
๋ฉ์์ง์ ๋ผ์ฐํ ํค๋ฅผ ํ์ 1:1์ผ๋ก ๋งค์นญ์ํค๋ ๋ฐฉ๋ฒ
์ผ๋ฐ์ ์ผ๋ก ํ์ ์ด๋ฆ์ ๋ฐ์ธ๋ฉ๊ณ ์ ํ๋ ๋ผ์ฐํ ํค์ ๋์ผํ๊ฒ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
Topic Exchange
์์ผ๋์นด๋๋ฅผ ์ด์ฉํด์ ๋ฉ์์ง๋ฅผ ํ์ ๋งค์นญ์ํค๋ ๋ฐฉ๋ฒ
๋ฉ์์ง์ ๋ผ์ฐํ ํค๋ฅผ ํ์ 1:N์ผ๋ก ๋งค์นญ์ํค๋ ๋ฐฉ๋ฒ
Headers Exchange
key-valie๋ก ์ ์๋ ํค๋์ ์ํด ๋ผ์ฐํ ์ ๊ฒฐ์ ํ๋ค.
x-match๋ผ๋ ํน๋ณํ argument๋ก ํค๋๋ฅผ ์ด๋ค์์ผ๋ก ํด์ํ๊ณ ๋ฐ์ธ๋ฉํ ์ง๋ฅผ ๊ฒฐ์ ํ๋๋ฐ,
- x-match๊ฐ all์ด๋ฉด ๋ฐ์ธ๋ฉ ์กฐ๊ฑด์ ๋ชจ๋ ์ถฉ์กฑ์์ผ์ผ ํ๋ค๋ ๊ฒ์ด๊ณ (AND),
- any์ด๋ฉด ํ๋๋ง ์ถฉ์กฑ์ํค๋ฉด ๋๋ค๋ ๊ฒ์ด๋ค.
Fanout Exchange
๋ชจ๋ ๋ฉ์ธ์ง๋ฅผ ๋ชจ๋ ํ๋ก ๋ผ์ฐํ ํ๋ ์ ํ์ด๋ค.
Queue
๋ฉ๋ชจ๋ฆฌ๋ ๋์คํฌ์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๊ณ ๊ทธ๊ฒ์ Consumer์๊ฒ ์ ๋ฌํ๋ ์ญํ
- ํ๋ ์ค์ค๋ก๊ฐ ๊ด์ฌ์๋ ๋ฉ์์ง ํ์ ์ ์ง์ ํ Binding์ ํตํด exchange์ ๋ง๊ทธ๋๋ก binding ๋๋ค.
Binding
exchange์ Queue์์ ๊ด๊ณ๋ฅผ ์ ์ํ ์ผ์ข ์ ๋ผ์ฐํ ํ ์ด๋ธ
- ๊ฐ์ ํ๊ฐ ์ฌ๋ฌ๊ฐ์ exchange์ bind ๋ ์๋ ์๊ณ , ํ๋์ exchange์ ์ฌ๋ฌ๊ฐ์ ํ๊ฐ binding ๋ ์๋ ์๋ค.
Routing Key
Publisher์์ ์ก์ ํ ๋ฉ์์ง ํค๋์ ํฌํจ๋๋ ๊ฒ์ผ๋ก ์ผ์ข ์ ๊ฐ์ ์ฃผ์
- Exchange๋ ์ด๊ฒ์ ์ด์ฉํด์ ์ด๋ค ํ๋ก ๋ฉ์์ง๋ฅผ ๋ผ์ฐํ ํ ๊ฑด์ง ๊ฒฐ์ ํ ์ ๋ ์๋ค.