본 장에서는 Jakarta Messaging(이하 JMS)를 간단히 소개한 뒤 JEUS MQ의 특징에 대해 설명한다.
JMS는 애플리케이션 간의 통신을 메시지 기반으로 수행하기 위한 Java 표준 API를 정의한 것이다. 여기에는 메시징에 필요한 구성 요소 및 메시지 모델에 해당하는 인터페이스를 정의하고 이들 간의 관계를 설명하고 있다.
JMS는 다음과 같은 특징을 갖는다.
느슨한 결합 구조
메시지 송신자와 수신자는 서로에 대해 알 필요가 없다.
비동기 통신
메시지 수신자는 요청하지 않아도 서버에 도착하는 대로 메시지를 전달받을 수 있다.
신뢰성 있는 메시지 전달
메시지가 반드시 한 번(Once-and-Only-Once) 전달되는 것을 보장한다.
JMS에 대한 보다 자세한 설명이나 API 사용법에 대해서는 JMS 스펙(https://jakarta.ee/specifications/messaging/)을 참고한다.
JEUS MQ(Message Queue)는 TmaxSoft의 Jakarta EE 서버인 JEUS에 포함된 JMS 스펙의 구현체로 Non-Blocking I/O와 XA 트랜잭션을 지원하며 보안이 강화된 가용성 높은 메시지 서비스를 제공한다.
JEUS MQ는 JMS 버전 2.0 스펙을 지원하며 다음과 같은 주요 특징을 갖는다.
Non-Blocking I/O 지원
Non-Blocking I/O를 사용하여 같은 시스템 리소스로 더 많은 클라이언트를 동시에 처리할 수 있다.
XA 트랜잭션 지원
JMS 스펙에서 선택 사항으로 정의되어 있는 XA 트랜잭션을 지원한다.
보안 강화
SSL(Secure Socket Layer) 통신을 지원하며, JEUS Security를 사용할 수 있다.
고가용성
클라이언트는 네트워크나 서버 장애로부터 자동으로 장애가 극복된다.
규모 가변성
클라이언트나 메시지 처리량이 증가해도 JEUS MQ 클러스터링을 통해서 부하를 분산할 수 있다.