๋ฏธ๋ค์จ์ด
๋ฏธ๋ค์จ์ด๋ ์ ์ชฝ์ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ์ค๊ฐ์์ ๋งค๊ฐ ์ญํ ์ ํ๋ ์ํํธ์จ์ด, ๋คํธ์ํฌ๋ฅผ ํตํด์ ์ฐ๊ฒฐ๋ ์ฌ๋ฌ ๊ฐ์ ์ปดํจํฐ์ ์๋ ๋ง์ ํ๋ก์ธ์ค๋ค์๊ฒ ์ด๋ค ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ฐ๊ฒฐํด ์ฃผ๋ ์ํํธ์จ์ด๋ฅผ ๋งํ๋ค. 3๊ณ์ธต ํด๋ผ์ด์ธํธ/์๋ฒ ๊ตฌ์กฐ์์ ๋ฏธ๋ค์จ์ด๊ฐ ์กด์ฌํ๋ค. ์น ๋ธ๋ผ์ฐ์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ฝ์ด์ฌ ์ ์๊ฒ ์ค๊ฐ์ ๋ฏธ๋ค์จ์ด๊ฐ ์กด์ฌํ๊ฒ ๋๋ค.
๋ฉ์ธ์ง ์งํฅ ๋ฏธ๋ค์จ์ด

๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด(Message-oriented middleware, MOM)๋ ์์ฉ ์ํํธ์จ์ด ๊ฐ์ ๋ฐ์ดํฐ ํต์ ์ ์ํ ์ํํธ์จ์ด์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ๋น๋๊ธฐ ๋ฉ์์ง ์ ๋ฌ์ ๊ธฐ์ดํ ๊ฒ์ ๊ฐ๋ฆฌํจ๋ค. ๋ง์ ๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด๋ ๋ฉ์์ง ํ ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง, ๊ทธ ๋ฐ์๋ ๋ธ๋ก๋์บ์คํธ ํ์ ๋ฉ์์ง ์์คํ ๊ณผ ๋ฉํฐ ์บ์คํธ ํ์์ ๋ฉ์์ง ์์คํ ์ ์ธ ๋ด์ฉ๋ ์๋ค. ์ฅ์ ์ผ๋ก๋ ์ ์ฅ(๋ฏธ๋ค์จ์ด์์ ๋ฉ์ธ์ง๋ฅผ ๋ฐฑ์ ), ๋ผ์ฐํ (๋ฏธ๋ค์จ์ด์์ ๋ฐฐํฌ ๊ฐ๋ฅ), ๋ณํ(์ก/์์ ์์ ๋ง์ถฐ ํ์ ๋ณํ ๊ฐ๋ฅ) ๋จ์ ์ผ๋ก๋ ๋ฉ์ธ์ง ์ ์ก ์์ด์ ํธ ํ์, ํ์ค์ด๋ผ๊ณ ๋ถ๋ฅผ ๊ท๊ฒฉ์ด ์กด์ฌํ์ง ์์
๋ฉ์์ง ํ ์์คํ
๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด๋ฅผ ๊ตฌํํ ๊ฒ, ๋ฉ์์ง ๊ณต๊ธ์ ์์น์ ์ผ์ข ์ ๋ฒํผ(Queue)๋ฅผ ๋๋ค. ํด๋ผ์ด์ธํธ์ ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ง์ ๋ฐ์ดํฐ ํต์ ์ ํ๊ฒ ๋๋ฉด ๋ณ๋ชฉํ์์ด ๋ฐ์ํด ์๋ฒ์ ์ฑ๋ฅ์ด ์ ํ๋๋ค. ๋ฏธ๋ค์จ์ด์ ๋ฉ์์ง๋ฅผ ์์ํด ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ํด ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค. ํ์ค์ด ์์ด ๊ตฌํํ๋ ์ฌ๋๋ง๋ค ์ฌ์ฉ๋ฒ์ด๋ ๊ตฌํ๋ฐฉ์์ด ๋ชจ๋ ๋ค๋ฅด๋ค.
AMQP

AMQP(Advanced Message Queueing Protocol)๋ ๋ฉ์ธ์ง ํ์ ํ์ค์ ์ ์ํ ๊ฒ์ด๋ค. ๋ง์ ๋ธ๋ก๊ทธ์์ ์กฐ๊ธ ํท๊ฐ๋ฆฌ๊ฒ ์ ์ํ๊ณ ์๋๋ฐ, ์ด ํ์ค์ AMQP(ํ๋กํ ์ฝ)๊ณผ AMQM(๋ชจ๋ธ ์ค๊ณ ๋ฐฉ์)์ ํฌํจํ๊ณ ์๋ค.
AMQP์ ํ๋กํ ์ฝ์ ์ดํ๋ฆฌ์ผ์ด์ ๊ณ์ธต, ๋คํธ์ํฌ ๊ณ์ธต์์ ์ ์๋๋ค. ์ดํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ด์ผ๊ธฐํ๊ณ ์ํธ์์ฉํ ์ ์๋ ๊ท์น์, ๋คํธ์ํฌ ๊ณ์ธต์์๋ ๋ฉ์์ง ๋ธ๋ก์ปค๋ฅผ ๋ฌด์ฌํ ์ง๋๊ฐ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ํ ์ ์๋ ๊ท์น์ ์ ์ํ๋ค.
AMQP๋ ๋ฏธ๋ค์จ์ด์ ํด๋ผ์ด์ธํธ์ ๋์์ ๋ํด ๊ฐ๊ธฐ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ์ํธ ์ด์ฉ๋ ์ ์๋ ์ ๋๋ก๊น์ง ๊ถํ์ ์ฃผ๋ฉฐ, SMTP, HTTP, FTP ๋ฑ๋ ์ํธ ์ด์ฉ์ด ๊ฐ๋ฅํ๋ค. (API + ๋ฉ์์ง ์ก์ ์๊ฐ ํด์ผ ํ๋ ํ์)๋ฅผ ์ ์ํ๋ JMS์๋ ๋ค๋ฅด๊ฒ, AMQP๋ ๋ฐ์ดํฐ ํ์์ ์ ์ํ๊ณ ๊ทธ๊ฒ์ ๋ฐ๋ฅด๋ ๋ฉ์์ง๋ฅผ ๋ง๋ค๊ณ ํด์ํ ์ ์๋ ๋๊ตฌ๋ผ๋ฉด ๊ตฌํ ์ธ์ด์ ๊ด๊ณ ์์ด ๋ค๋ฅธ ํธํ ๋๊ตฌ์ ์ํธ ์ด์ฉ์ด ๊ฐ๋ฅํ๋ค.
AMQM

์ด๊ฒ์ด AMQP์ ๋ชจ๋ธ์ด๋ค. ์์ธํ ์ค๋ช ์ ์ด ๋ชจ๋ธ์ ๋ฐ๋ฅด๋ RabbitMQ์ ๋ชจ๋ธ์ ๋ณด๋ฉฐ ๋ ์์ธํ ์์๋ณด์.
RabbitMQ ๋์
AMQP๋ฅผ ๋ฐ๋ฅด๋ ๋ฉ์์ง ๋ธ๋ก์ปค์ด๋ค. ์๋ ๋งํฌ ์ค๋ช ์ด ์ข์ผ๋ ์ฒจ๋ถํ๋ค.
RabbitMQ๋?
์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ฉด์ API-Gateway์ ํ ํฐ ์บ์๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด RabbitMQ๋ฅผ ๊ณต๋ถํ๋ ๋ด์ฉ์ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค.
blog.dudaji.com
RabbitMQ ํํ ๋ฆฌ์ผ
0. Docker ์ค์น(์ค์น ๋งํฌ)
์ค์น ์ค WSL์ ์ ๋ฐ์ดํธ ํ๋ผ๋ ์ฐฝ์ด ๋์ฌ ์ ์๋ค. ๋งํฌ๋ฅผ ์ซ์๊ฐ ์ค์นํ๊ณ Restart ๋ฒํผ์ ๋๋ฅด๋ฉด ๋๋ค.
1. RabbitMQ ์ค์น(์ฐธ๊ณ ๋งํฌ)
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
2. ๊ฐ์ ์ฌ์ฉํ ์ธ์ด์ ๋ง๊ฒ ์ถ๊ฐ ์ค์น
๋ณธ์ธ์ ํ์ด์ฌ์ ์ฌ์ฉ(Pycharm, Anaconda, pika ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น)
3. ํํ ๋ฆฌ์ผ ๋ฐ๋ผํ๊ธฐ
๋ฒ์ญ๋ณธ(๋งํฌ)
RabbitMQ Tutorials โ RabbitMQ
RabbitMQ Tutorials These tutorials cover the basics of creating messaging applications using RabbitMQ. You need to have the RabbitMQ server installed to go through the tutorials, please see the installation guide or use the Docker image. Executable version
www.rabbitmq.com
4. ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผ๊ฐ๋ฉฐ ๊ณต๋ถํ๋ ๊ฒ๋ค
- Vhost(virutal host)
- Virtual Host๋ฅผ ํตํด์ ํ๋์ RabbitMQ ์ธ์คํด์ค ์์ ์ฌ์ฉํ๊ณ ์๋ Application์ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
- Connection
- ๋ฌผ๋ฆฌ์ ์ธ TCP Connection, HTTPS -> TLS(SSL) Connection์ ์ฌ์ฉ
- Channel
- ํ๋์ ๋ฌผ๋ฆฌ์ ์ธ Connection ๋ด์ ์์ฑ๋๋ ๊ฐ์์ Connection
- Consumer์ process๋ thread๋ ๊ฐ์ Channel์ ํตํด Queue์ ์ฐ๊ฒฐ ๋ ์ ์์ต๋๋ค.
RPC๋?
์ RPC๊ฐ ๋ฑ์ฅํ๊ฒ ๋์์๊น? ์ด๋ป๊ฒ ํ๋ฉด ๋ถ์ฐ ๋คํธ์ํฌ ์ปดํจํฐ ํ๊ฒฝ์์ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๊ฒ ํ ์ ์์๊น? ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ปค๋ฎค๋์ผ์ด์ ํจํด์? Client - Server ํจํด Client๋ ์์ฒญํ
nesoy.github.io
์ฐธ๊ณ ๋งํฌ:
์ํค๋ฐฑ๊ณผ 'AMQP' : https://ko.wikipedia.org/wiki/AMQP
CloudAMQP 'What is AMQP and why is it used in RabbitMQ?' : https://www.cloudamqp.com/blog/what-is-amqp-and-why-is-it-used-in-rabbitmq.html
CloudAMQP 'Microservices - why use RabbitMQ?' : https://www.cloudamqp.com/blog/why-use-rabbitmq-in-a-microservice-architecture.html
ํฐ์คํ ๋ฆฌ 'RabbitMQ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ' ; https://kamang-it.tistory.com/entry/AMQPRabbitMQRabbitMQ%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%99%80-%EC%84%A4%EC%B9%98%EB%B0%A9%EB%B2%95-1
ํฐ์คํ ๋ฆฌ 'RabbitMQ์ ๊ธฐ๋ณธ ๊ฐ๋ ': https://ram2ram2.tistory.com/3
'RabbitMQ ๊ณ์ ์ค์ ' : http://abh0518.net/tok/?p=384
[Rabbitmq] 1. ์ด๋ณด๋ฅผ ์ํ RabbitMQ ํ๋ฑ ์ค์นํ๊ณ ์ค์ ํ๊ธฐ | ์๋ธ์ ๊ฟ์ค๋ถ
ํ์ฌ์ ์บ์์นด์ฐ ์๋น์ค์ ํธ์ ํํธ๋ฅผ ๊ฐ์ ํด์ผํ ์ผ์ด ์๊ฒผ๋ค. ๋ ๊ฑฐ์ ์ฝ๋๊ฐ ๋๋ฌด oldํ๊ฒ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ธ๋ฐ ๊ทธ ์ค ๋์ ๋๋ ๊ฒ์ push message queue๋ฅผ RDBMS๋ก ๊ตฌํํด ๋์ ๋ถ๋ถ์ด๋ค. DB ํ๋ ํ ๋
abh0518.net
http://gjchoi.github.io/rabbit/rabbit-mq-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
RabbitMQ - ์ดํดํ๊ธฐ
Rabbit MQ๊ฐ ๋ฌด์์ด๋ฉฐ, ์ด๋ค ํน์ง์ ๊ฐ์ง๊ณ ์๋์ง ์ดํด๋ณธ๋ค.
gjchoi.github.io
https://blog.ashon.dev/blog/2018/10/14/rabbitmq-message-mirroring-using-shovel.html
RabbitMQ shovel ํ๋ฌ๊ทธ์ธ์ ์ด์ฉํ ๋ฉ์์ง ๋ฏธ๋ฌ๋ง
RabbitMQ shovel plugin์ ํ์ฉํด์ Queue๋ก ๋ค์ด์ค๋ ๋ฉ์์ง๋ค์ ๋ค๋ฅธ Queue๋ก ๋ฏธ๋ฌ๋ง์ ๊ตฌ์ฑํด ์ค ์๋น์ค์์ ํ๋ฌ๊ฐ๋ ๋ฉ์์ง๋ค์ ํธ๋ ์ด์ฑํ๋ ๋ฐฉ๋ฒ์ ์์๋ณธ๋ค.
blog.ashon.dev
https://m.blog.naver.com/tmondev/221051503100
RabbitMQ๋ก ๋ฉ์์ง ์์ค ์ต์ํ ํ๋ ๋ฒ(1)
์ฐ๋ฆฌ๋ ๋ฉ์์ง๋ฅผ ๋ฐ์ํ ํ ๋ฐ์์ ์ฒ๋ฆฌํ๋ ๋ฉ์์ง ์์คํ ์ ๋์ ์ด ํ์ํ๋ค. ๋ฌผ๋ก ์ ์ฅ์๋ฅผ ์ด์ฉํ์ฌ ์ง...
blog.naver.com
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=zltmwnffldpt&logNo=220914409334
rabbitmq ha ๋ฐ ํด๋ฌ์คํฐ๋ง ์ฑ๋ฅ ๊ด๋ จ ๋ด์ฉ์ ๋ฆฌ
ํด๋ฌ์คํฐ๋ง ๊ด๋ จ - rabbitMQ broker ๊ฐ ๋์ํ๊ธฐ ์ํ ๋ฐ์ดํฐ, ์ํ๊ฐ ๋ชจ๋ ๋ณต์ ์ถ๊ฐ์ค๋ช : ํด๋ฌ์คํฐ๋ง์ผ...
blog.naver.com
'๐ป > ์ธํ๋ผ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] ๋ช ๋ น์ด ๋ชจ์ (0) | 2021.07.30 |
---|---|
[Linux] There are stopped jobs (0) | 2021.07.30 |
[Linux] ๋๋ ํ ๋ฆฌ ํ์ผ ์์คํ (0) | 2021.07.28 |
[์ฐธ๊ณ ] RabbitMQ ์กฐ์ฌ ์ ์ฉ์ด์ ๋ฆฌ (0) | 2021.07.09 |
[๋ฆฌ๋ ์ค] ๋ ธํธ๋ถ์ Ubuntu ํํฐ์ ๋ถํ ์ค์น (1) | 2020.12.30 |