메시지 큐

개요

메시지 큐란 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신방법의 한 종류이고,
Queue 자료구조를 이용하여 메세지를 전달하는 시스템이며 메세지 지향 미들웨어(MOM)을 구현한 시스템이다.

메시지 지향 미들웨어(MOM)

*미들웨어 : 애플리케이션들을 연결하여 이들이 서로 데이터를 교환할 수 있게 해주는 소프트웨어
메시지 지향 미들웨어는 분산 시스템 내에서 애플리케이션 간의 통신을 비동기 메세징 방식으로 처리하는 미들웨어이다.

특징

비동기 방식
Queue에 메시지를 저장하고 Pub/Sub 방식으로 동작하기 때문에 비동기 방식으로 동작한다.
Producer는 Queue에 메세지를 저장하고 작업을 마치면 되고 Consumer는 Queue에서 메세지를 빼가고 작업을 마치면 된다.
Pub/Sub 방식
발행/구독 모델을 지원하기 때문에 한 애플리케이션에서 한 Topic에 대해 메세지를 발행하면 이를 구독하는 여러 수신자들이 메세지를 받을 수 있다.
여러 어플리케이션에 메세지를 보낼 수 있기 때문에 분산환경에서 유용하다.
낮은 결합도
비동기 방식으로 두 시스템간 실행 타이밍이 맞지 않아도 통신이 가능하다는 점
메세지 큐는 시스템 간 통신을 간접적으로 처리한다. 송신자와 수신자는 직접 연결되지 않는다.
위와 같은 이유로 각 시스템은 독립적으로 존재할 수 있고 확장에 유연하다.
내결함성(탄력성)
시스템의 일부분이 장애가 생겨도 유연하게 대처될 수 있다. 이는 낮은 결합도와도 연관이 있다.
수신자 역할을 하는 시스템에 장애가 생기더라도 송신자는 메세지 큐에 메세지를 저장하기만 하면 되고
메세지 큐에 메세지는 저장되어 있을테니 수신자 시스템이 정상화가 되면 그때부터 메세지큐에 있는 메세지를 읽어 작업을 처리하면 된다.
메세지 큐 방식에서는 수신자가 문제가 있어도 송신자는 메세지를 송신하는데 문제가 없고, 송신자가 문제가 있어도 수신자는 메세지를 수신하는데 문제가 없다.
분산 처리 및 높은 처리량
메세지 큐의 큐는 여러 수신자 시스템에게 메세지를 분배할 수 있는 기능이 있다. 이를 통해 작업을 병렬적으로 처리할 수 있어 처리량을 늘릴 수 있다.
또한 시스템의 처리량이 증가하게 되면 수신자 인스턴스를 추가하여 큐의 메시지를 빠르게 처리할 수도 있고 추가한 인스턴스는 처리량이 낮아지면 다시 삭제하면 되기때문에 동적으로 부하를 분산시킬 수 있다.