Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 그라파나
- 스칼라 동시성
- Golang
- Adapter 패턴
- 스위프트
- 하이퍼레저 패브릭
- 파이썬 머신러닝
- Akka
- 파이썬 동시성
- 안드로이드 웹뷰
- Actor
- 블록체인
- Play2
- 하이브리드앱
- 주키퍼
- 엔터프라이즈 블록체인
- 스칼라 강좌
- play2 강좌
- hyperledger fabric
- Play2 로 웹 개발
- akka 강좌
- 플레이프레임워크
- 이더리움
- 스칼라
- 파이썬 강좌
- play 강좌
- 파이썬
- Hyperledger fabric gossip protocol
- CORDA
- 파이썬 데이터분석
Archives
- Today
- Total
HAMA 블로그
RabbitMQ 사용패턴들 본문
역주: 메세지큐에 대한 글을 적기 전에 왜 메세지큐냐? 를 먼저 생각해봐야한다.
메세지큐는 그냥 메세지를 전달해주는 서버인건데, 기술자체에 집중할 필요는 나중에 생각해보고 , 처음 생각해볼것은 왜 메세지를 전달하냐인데.. 이것의 가장 큰 이유는 행위(메세지)를 분산시키기 위함이라고 볼수있다. 말이 좀 어려운거 같은데 쉽게 말하면 대부분의 경우 하나의 일을 하기위한 프로세스에서는 쓸 필요가 없다는 뜻이고 , 어떤 행위에 대한 프로세스가 여러갈래인 경우에 사용하면 된다. 예를들어 브라우저에서 사용자가 버튼은 클릭했을때, 서버에 전달된 행위를 디비에 전달하고 바로 리턴해주는게 하나의 프로세스이라고 보면, 그 행위를 다른곳으로 전파시킬 필요가 있을때 메세지큐를 사용한다.
실질적인 예로는 소셜서버에 글을 올렸을때, 내가 글을 올린것을 즉시 확인해야하는 나 자신을 위한 프로세스는 가장 우선되야하며, 내가 올린글이 다른사람에게 전달(feed) 되기 위한 시간은 즉시가 아니어도 된다. 그때 처음 버튼을 눌렀던 행위를 메세지큐에 던저넣고 바로 리턴한후에 나 자신을 위한 프로세스가 즉각적으로 응답되게 하는것이다.
또 다른 예로는 IoT 엣지디바이스가 데이터를 생성하면 그 데이터를 메인 스트리밍을 따라서는 즉각적으로 사용자한테 전달되며 , 또다른 갈래로는 스톰같은 실시간 분석도구 라든지, 다른 서버로 보내는데 사용할수있다는것이다. 역시 행위(메세지) 를 여러갈래로 분산시킨다고 보면된다.
Hello World!
* 메세지를 차례로 보내면 차례로 받는다.
Work Queues
Distributing tasks among workers (the competing consumers pattern) (워커에게 하나씩 균등히 나누어 준다)
Round-robin dispatching
* 메세지를 하나의 큐에 보내면 , 소비자들이 하나씩 사이좋게 나누어 갖는다.
* 보내는쪽은 하나 받는쪽은 여러개
Fair dispatch
* 메세지를 하나의 큐에 보내면 , 소비자들이 나누어갖는데, 시간배분을 해준다. (위처럼 라운드로빈이라면 홀수로 받는 워커에 일이 가중될수도있다. 홀수로 보내지는 일이 항상 많을경우)
Publish/Subscribe
Sending messages to many consumers at once (모든 소비자에게 다 준다)
Exchanges
* Exchanges 를 통해 여러개의 큐에 보낸다.
* 워커큐와 다른점은 워커큐는 항상 하나의 메세지는 하나의 컨슈머만 받을수있다는것이고,
생산자/소비자 패턴에서는 하나의 메세지를 여러 워커가 받을수있다라는 점.
Bindings
Putting it all together
Routing
Receiving messages selectively (원하는 것을 가져가게 한다)
Direct exchange
* Exchanges 를 통해 여러개의 큐에 구분하여 보낸다. 예를들어 한쪽은 크리티컬하여 하드에 저장될필요가있는것들이고 하나는 그냥 콘솔에 보여지고 버리는 로그 메세지들.
Multiple bindings
Putting it all together
Topics
Receiving messages based on a pattern (topics) (특정 패턴에 기반해 나누어 가진다)
Topic exchange
RPC
Request/reply pattern
'오픈소스, 미들웨어' 카테고리의 다른 글
Kafka, Storm, Spark Streaming 의 메세지 보증 (0) | 2016.04.20 |
---|---|
카프카(Kafka) vs RabbitMQ (0) | 2015.09.04 |
MQTT 와 모스키토(Mosquitto) 란 무엇인가? (0) | 2015.09.03 |
[OpenTSDB] 어떻게 OpenTSDB 는 동작하나? (0) | 2015.07.19 |
OSGi 는 어떻게 내 삶을 변화시켰나 (번역) (0) | 2015.07.17 |
Comments