기존의 동기식 통신 방식은 사용자로부터 받은 요청을 전부 처리할 때까지 Blocking 상태에 빠지게 된다.
하지만 메세지 큐 사용 시 요청을 큐에 넣기만 하면 다음 사용자의 요청을 받아들일 수 있게 된다.
JMS(Java Message Service) 클라이언트와 함께 자바로 작성된 오픈 소스 메시지 브로커
하나 이상의 클라이언트나 서버로부터 통신을 조성시키는 엔터프라이즈 기능들을 제공
자바 및 기타 여러 언어 간 클라이언트 지원
자바 기반의 MOM API 표준이며 둘 이상의 클라이언트 간의 메세지를 보낸다.
자바 플랫폼, 엔터프라이즈 에디션 기반이며, 메시지 생성, 송수신, 읽기를 한다.
ActiveMQ의 JMS 라이브러리를 사용한 자바 어플리케이션간 통신 가능.
비동기, 신뢰성을 가지며 다른 분산 어플리케이션 컴포넌트 간의 통신을 허용한다.
핵심 : Message Broker, Destination
Message Broker : 목적지에 메세지를 건내주는 중개자
Destination : 목적지에 배달될 메세지 모델
QUEUE : 메세지를 받기 위해 Consumer간 경쟁, 연결된 순서대로 메세지 제공
Topic : Pub/Sub 모델, 구독자 모두에게 메세지 제공
구성 요소
헤더
등록 정보
본문
헤더
- 헤더 값 설정 방법
- 메세지 생성 또는 전달 프로세스 중 JMS 공급자에 의해 자동 생성
- 메세지 생성자를 작성할 때 지정된 설정을 통해 생성자 클라이언트에 의해
- 메세지 단위의 메세지에서 생성자 클라이언트에 의해
등록 정보
등록 정보 이름, 등록 정보 값의 쌍으로 지정
데이터를 작성한 프로세스에 대한 정보, 데이터가 작성된 시간, 데이터 각 부분의 구조 포함 가능
본문 유형
StreamMessage
본문이 Java 프리미티브 값의 스트림을 포함하는 메시지.
MapMessage
본문에 일련의 이름-값 쌍을 포함하는 메시지.
TextMessage
본문에 Java 문자열을 포함하는 메시지.
ObjectMessage
BytesMessage
ConnectionFactory->
Connection->
Session->
MessageProducer->
send