본문 바로가기

AMQP

Advanced Message Queuing Protocol

MQ는 프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환

이때 데이터를 교환할때 시스템이 관리하는 메세지 큐를 이용하는 것이 특징이다. 이렇게 서로 다른 프로세스나 프로그램 사이에 메시지를 교환할때 AMQP(Advanced Message Queueing Protocol)을 이용한다. AMQP는 메세지 지향 미들웨어를 위한 open standard application layer protocol 이다. AMQP를 이용하면 다른 벤더 사이에 메세지를 전송하는 것이 가능한데 JMS (Java Message Service)가 API를 제공하는것과 달리 AMQP는 wire-protocol을 제공하는데 이는 octet stream을 이용해서 다른 네트워크 사이에 데이터를 전송할 수 있는 포멧인데 이를 사용한다.


메시지 큐의 장점:

  • 비 동기(Asynchronous) : Queue에 넣기 때문에 나중에 처리 할 수 있다.
  • 비 동조(Decoupling) : 애플리케이션과 분리 할 수 있다.
  • 탄력성(Resilience) : 일부가 실패 시 전체에 영향을 받지 않는다.
  • 과잉(Redundancy): 실패 할 경우 재실행 가능
  • 보증(Guarantees): 작업이 처리된 걸 확인 할 수 있다.
  • 확장성(Scalable): 다수의 프로세스들이 큐에 메시지를 보낼 수 있다.

Message Queueing은 대용량 데이터를 처리하기 위한 배치 작업이나, 체팅 서비스, 비동기 데이터를 처리할때 사용한다. 프로세스단위로 처리하는 웹 요청이나 일반적인 프로그램을 만들어서 사용하는데 사용자가 많아지거나 데이터가 많아지면 요청에 대한 응답을 기다리는 수가 증가하다가 나중에는 대기 시간이 지연되어서 서비스가 정상적으로 되지 못하는 상황이 오기 때문에 기존에 분산되어 있던 데이터 처리를 한곳으로 집중하면서 메세지 브로커를 두어서 필요한 프로그램에 작업을 분산 시키는 방법을 하고 싶었기 때문이다.

 

메시지 큐 사용처 :

  • 다른 곳의 API로 부터 데이터 송수신 가능.
  • 다양한 애플리케이션에서 비 동기 통신을 할 수 있음.
  • 이 메일 발송 및 문서 업로드 가능
  • 많은 양의 프로세스들을 처리 할 수 있다(IPC 기능?).


' AMQP' 카테고리의 다른 글

Rabbit MQ 기본 컨셉  (0) 2016.10.21