소개
JMS(Java Messaging System)은 엔터프라이즈에서 비즈니스 데이터 및 이벤트의 비동기 커뮤니케이션에 대한 플랫폼 간 표준을 제공합니다. 커뮤니케이션은 보통 프로세스 및 시스템에 걸쳐 발생합니다.
보통 다른 시스템에서 실행 중인 응용프로그램의 오브젝트는 JMS를 통해 정의된 표준 인터페이스 세트를 통해 MOM(Message-Oriented Middleware)의 서비스를 액세스하여 통신합니다.
JMS는 MOM 제공자로부터 Java 프로그래머를 분리시키는 인터페이스 세트를 제공합니다(메시지 생성자 및 이용자 구현).
이 컨텐츠 페이지에서는 JMS의 일반 사용 및 주요 개념을 설명합니다.
메시지
메시지는 비즈니스 자체 포함된 비즈니스 데이터 패키지입니다. 세 개의 컴파트먼트가 있습니다.
-
헤더: 네트워크 라우팅 정보 및 메시지 ID를 포함합니다.
-
특성: 메시지의 메타데이터를 포함합니다. JMS가 특성의 일부를 구술하지만, 응용프로그램 프로그래머도 자체 특성을 추가할 수 있습니다.
-
페이로드: 실제 비즈니스 데이터를 포함합니다. 페이로드는 응용프로그램 프로그래머에 의해 완전히 제어됩니다.
JMS에서 메시지는 인터페이스 javax.jms.Message를 구현하는 오브젝트로 캡슐화됩니다. Java 프로그램은 다음 다이어그램에 표시된 대로 이 인터페이스를 통해 컴파트먼트에 액세스할 수
있습니다. 페이로드는 나중에 설명되는 여러 변형이 됩니다.
헤더에는 항상 필요한 메시지 특성이 포함됩니다. 다음 특성이 머리글에서 사용 가능합니다.
-
MessageID
-
Timestamp
-
CorrelationID
-
ReplyTo
-
Destination
-
DeliveryMode
-
Redelivered
-
Type
-
Expiration
-
Priority
특성은 메시지의 메타데이터를 제공하기 위해 응용프로그램 프로그래머가 사용할 수 있습니다. 특성은 임의의 이름-값-쌍 세트로 구성됩니다.
JMS에서 지원하는 페이로드 유형은 다음 여섯 가지입니다.
-
텍스트 메시지
-
오브젝트 메시지
-
바이트 메시지
-
맵 메시지
-
스트림 메시지
-
메시지(본문이 없음)
인터페이스가 javax.jms.Message를 확장하는 클래스 계층 구조에 페이로드 유형이 반영됩니다. 다음 클래스 다이어그램에서 빈번하게 사용되는 텍스트, 오브젝트 및 바이트 메시지를 표시합니다.
텍스트 메시지는 일반적으로 XML 데이터의 반송자입니다.
목적지
JMS는 목적지의 개념을 정의합니다. 메시지는 목적지에서 송신 및 수신됩니다. 목적지는 두 가지 양식으로 제공됩니다.
대기열은 오직 하나의 수신기로 메시지를 처리할 때 사용되는 메시지 목적지입니다. 메시지는 종이 편지를 전송하는 것과 유사하며, 대기열은 특정 수신자가 소유하는 편지함입니다. 대기열을 사용하는 통신을
지점간 통신이라고 합니다.
주제는 메시지를 여러 수신자가 수신할 필요가 있으며 각 수신자가 특정 종류의 메시지 수신에 관심이 있을 때 사용되는 메시지 목적지입니다. 다시 종이 편지와 유사한 메일을 사용하여, 신문에서 기사를
작성하는 것처럼 생각할 수 있으며 하나의 메시지를 여러 수신자가 읽습니다. 이러한 종류의 디자인을 공개 및 등록 모델로 나타냅니다.
메시지 전달
두 가지 방식으로 메시지 전달을 수행할 수 있습니다.
지속적 전달은 보장된 전달을 사용 가능하게 하는 파일 또는 데이터베이스로의 메시지 기억장치를 포함합니다. 비지속적 전달은 성능을 개선시키고 기억장치 오버헤드를 줄이지만, 메시지가 전달된다고 보장하지 않습니다.
JMS를 사용하는 대부분의 응용프로그램의 경우, 지속적 전달이 일반적으로 선택되는 방식입니다.
JMS 클라이언트
JMS 클라이언트는 JMS를 사용하는 Java 오브젝트입니다. 정의된 두 가지 역할이 있습니다.
-
메시지 생성자: 메시지를 작성하고 송신하는 Java 프로그램
-
메시지 이용자: 메시지를 수신하는 Java 프로그램
다음 다이어그램은 생성자, 이용자 및 JMS 제공자가 협업하는 방법에 대한 개요입니다.
메시지 생성자는 JMS 구현에 액세스하는 Java 클래스일 수 있습니다. 메시지 생성자는 메시지를 작성 및 전송합니다.
메시지 수신자는 JMS 구현을 액세스하는 Java 클래스일 수 있습니다. 메시지 수신자는 메시지를 수신하고 처리합니다.
JMS 클라이언트는 JMS에 액세스하기 위한 인터페이스 세트를 사용합니다. JMS 인터페이스를 구현하는 오브젝트는 팩토리 세트를 통해 작성됩니다. 초기 팩토리는 ConnectionFactory입니다.
연결 팩토리는 JNDI를 통해 찾아보기합니다. JMS 클라이언트는 연결 팩토리를 사용하여 연결 오브젝트를 작성합니다. 연결 오브젝트는 다른 JMS 오브젝트의 팩토리로 사용되는 세션 오브젝트를 작성하는 데
사용됩니다. 다음 그림에서는 대기열 및 주제의 세부사항에서 추상화되는 팩토리 간의 주요 개념적 관계를 설명합니다.
연결 팩토리, 연결 및 세션이 두 가지 양식으로 제공됩니다. 하나는 대기열에 대한 것이며 다른 하나는 주제에 대한 것입니다. 아래 클래스 다이어그램은 주요 JMS 개념의 인터페이스 계층 구조를 표시합니다.
JMS 프로바이더
JMS 프로바이더는 JMS 스펙을 충족시키는 구현입니다. JMS 프로바이더는 메시지를 수신, 지속 및 전달하는 데 관여합니다.
자세한 정보
JMS에 대한 자세한 정보는 http://java.sun.com/products/jms/를
참조하십시오.
|