관리 메뉴

한글창제의 기쁨

Rabbit MQ 본문

MessageQueue/RabbitMQ

Rabbit MQ

timesurfer 공간지배자 2019.03.31 22:10

 

Rabbit MQ


특징 

  • AMQP 구현 (Advanced Message Queing Protocol) UISO 표준 프로토콜 

  • 비동기 처리를 위한 메세지 큐 브로커 

  • 분산 처리에 대한 고려 (설정 편의)

  • 고가용성 보장 

  • 다양한 플러그인 지원 

  • 웹 콘솔 지원 


메세지 처리 프로세스 

Types of Exchanges(https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html)

 

 

Exchange, Binding , Queue 

 

1. Producer > rabbitMQ 의 Exchange 에 메세지 전송


    RabbitMQ의 중요 원칙중 하나는 Producer 가 어떠한 메시지도 Queue에 직접 보낼수 없도록 설계 되어 있다.   

    프로듀셔는 오직 Exchange에만 메세지를 보낼수 있는 것이다. 

2. Exchange > Binding을 통한 Queue 삽입 

 

    Binding은 Exchage 와 Queue 의 관계를 정의한 것으로 라우팅과 같은 개념이며, Queue는 메세지가 저장되는 버퍼 이다. 

3. Consumer 


    컨수머는 자신이 바라보고 있는 Queue 를 리스닝 하다가 큐가 삽입 되었을때 메세지를 수신 하여 처리한다. 

 

주요용어 

Producer (생상자)
    메세지를 생성하여 보내는 역할 

Publish 
    Producer 가 메세지를 보냄 

Queue 
    메세지를 저장 하는 버퍼 
    큐는 Exchange 에 의해 Binding 된다. 
    큐는 호스트 server의 메모리 및 디스크 제한에 구속된다. 

Consumer 
    메세지를 받아 처리 
    동일 큐를 바라보는 컨슈머는 라운드로빈 방식에 의해 자동으로 분배 된다. 

Subscribe
    Consumer 가 메세지를 수신하기 위해 큐를 실시간으로 리스닝 하고 있는 역할 

Exchange 
    Exchage type에 따라 동작 하며, 
    Producer 가 전달한 메세지를 Queue에 삽입 하는 역할 

Exchange Type     

    fanout 알려진 모든 Queue에 메세지를 전달 
    direct 지정된 routingKey를 가진 Queue에만 메세지 전달 
    topic 지정된 패턴 현태에 일치하는 큐에만 메세지 전달 

    com.event.#(여러단어) 

    com.event.*(한단어) 

header 

    헤더에 포함된 key = value 의 일치 조건에 따라 메세지 전달  


Bindings

    Exchange 로 Queue 에 연결(삽입, 꺼냄)해주는 기능 

routing

    Exchange 가 Queue에 메세지를 전달하는 과정 

routing Key 

    Exchange 로  Queue 에  Binding 될때 라우팅 키가 일치 하는지 판단하여 메세지를 전달할지 판단한다. 

메시지 수신통보 

많은 프로토콜이 메세지 전달 보장을 위해 ACK(nowledgement)  개넘 을 사용하며,  메시지 응답 을 보내주도록 되어 있다.
ack를 전송하지 않고 Consumer 가 오류가나거나 죽으면 (TCP 연결이 끊어지는 경우) RabbitMQ는 메세지가 완전히 처리도지 않았음을 
인식하고  다시 대기 시킨다. 
메세지 시간 초과가 없다. 

메시지 내구성 

  • RabbitMQ 서버가 중지되면 작업 손실이 생길수 있다. 

  • 손실되지 않도록 RabbitMQ는 기능을 제공하고 있다. 

  • Queue 생성시 durable 을 true로 생성,   MessageProperties.PERSISTENT_TEXT_PLAIN

참고 

메세지 내구성이 durabel을 ture로 생성한다고 하여 완벽하게 지원하는것은 아니다. 
메세지가 손실되지 않는다고 완전하게 보장 할순 없다. 
보다 강력한 보증이 필요한 경우엔 게시자 확인을 통해  가능하다.

 

 

'MessageQueue > RabbitMQ' 카테고리의 다른 글

RabbitMQ 설치  (0) 2019.03.31
Rabbit MQ  (0) 2019.03.31
0 Comments
댓글쓰기 폼