메시지 큐(message queue)
-
메시지 큐는 프로세스 또는 프로그램 간 데이터를 교환 할 때 사용하는 통신 방법 중 하나로, 메시지 지향 미들웨어 (Message Oriented Middleware)를 구현한 시스템
-
메시지 지향 미들웨어란, 비동기 메시지를 사용하는 응용 프로그램들 사이에서 데이터를 송수신하는 것을 의미한다.
-
메시지 큐는 메시지를 임시로 저장하는 간단한 버퍼라고 생각하면 된다.
-
메시지 전송시 생산자(Producer)로 취급되는 컴포넌트가 메시지를 메시지 큐에 추가한다. 해당 메시지는 소비자 (Consumer)로 취급되는 또 다른 컴포넌트가 메시지를 검색하고 이를 사용해 어떤 작업을 수행할 때 까지 메시지 큐에 저장된다.
-
각 메시지는 하나의 소비자에 의해 한번만 처리될 수 있다. (이러한 이유로 메시지 큐를 일대일 통신이라고 부름)
메시지 큐를 사용하는 이유는?
-
메시지 큐는 소비자가 실제로 메시지를 어느 시점에 가져가서 처리하는지 보장하지 않음. 언젠가는 큐에 넣어둔 메시지가 소비되어 처리될 것이라고 믿는다.
-
따라서, 이러한 비동기적 특성 때문에 메시지 큐는 실패하면 치명적인 핵심 작업보다는 어플리케이션의 부가적인 기능에 사용해야한다.
-
이메일 전송
-
블로그 포스팅
메시지 큐의 이점
- 비동기
- 동기화 방식은 많은 데이터가 전송될 경우 병목이 생기고, 뒤에 들어오는 요청에 대한 지연이 생김.
- 낮은 결합도
- 생산자 서비스와 소비자 서비스가 독립적으로 행동하게 됨으로 서비스간 결합도가 낮아진다.
- 확장성
- 생산자 서비스 혹은 소비자 서비스를 원하는대로 확장할 수 있기 때문에 확장성이 좋다.
- 탄력성
- 소비자 서비스가 다운되더라도 어플리케이션이 중단되지 않는다. 메시지는 메시지 큐에 남아있고, 소비자 서비스가 다시 시작될 때 마다 추가설정이나 작업을 수행하지 않고 메시지 처리를 시작 할 수 있다.
- 보장성
- 메시지 큐는 큐에 보관되는 모든 메시지가 결국 소비자서비스에게 전달된다는 일반적인 보장을 제공한다.
RabbitMQ, Kafka, ActiveMQ 과 같은 서비스.