Spring

[Spring] JMS (Java Message Service)란

Dong538 2021. 12. 21. 23:02

JMS(Java™ Message Service)
Message Queue는 JMS(Java™ Message Service) 개방형 표준을 구현하는 표준 기반 메시징 솔루션.


엔터프라이즈 메시징 시스템
엔터프라이즈 메시징 시스템에서 독립 분산 응용 프로그램이나 응용 프로그램 구성 요소는 메시지를 통해 상호 작용할 수 있습니다. 동일한 호스트나 네트워크에 있거나 또는 인터넷을 통해 느슨하게 연결되어 있는 이 구성 요소들은 메시징을 사용하여 데이터를 전달하고 각자의 기능을 조정합니다.

많은 수의 구성 요소가 동시에 메시지를 교환하고 고용량의 처리량을 지원하기 위해서는 메시지 발신이 사용자의 즉시 수신 가능 여부에 따라 결정되어서는 안 됩니다. 메시지 사용자가 작업 중이거나 오프라인 상태인 경우, 시스템은 사용자가 온라인이 될 때 메시지 수신이 가능하도록 해야 합니다. 이러한 메시지 송수신의 분리를 비동기식 메시지 전달이라고 합니다.

비동기식 메시징 모델은 복잡한 시스템을 통합하는 작업에 매우 적합합니다. 이 모델은 작업 수행 과정에서 한 구성 요소가 다른 구성 요소를 방해할 수 없게 되어 있습니다. 비동기식 메시징은 동기식 시스템에서 가능한 일부 제어 기능을 포기하지만 구성 요소의 상호 작용에 상당한 유연성을 제공하며 한 구성 요소가 실패하더라도 전체 구성 요소의 실패로 연결되지 않으므로 견고성이 더해집니다.

엔터프라이즈 메시징 시스템의 요구 사항
일반적으로 엔터프라이즈 응용 프로그램 시스템은 24시간 중차대한 작업으로 무수히 많은 메시지를 교환하는 많은 수의 분산 구성 요소로 구성됩니다. 비동기식 메시징 지원을 비롯하여 이러한 시스템을 지원하려면 엔터프라이즈 메시징 시스템이 다음 요구 사항을 만족시켜야 합니다.

안정적인 전달. 구성 요소 간에 전달되는 메시지는 네트워크나 시스템 오류로 인해 손실되지 않아야 합니다. 즉 시스템에서 메시지 전달을 보장할 수 있어야 합니다.

보안. 메시징 시스템은 사용자 인증, 메시지 및 자원에 대한 인증된 액세스, 회선을 통한 암호화와 같은 기본 보안 기능을 지원해야 합니다.

확장성. 메시징 시스템은 성능이나 메시지 처리량이 실제로 저하되지 않으면서 로드 증가(사용자 수 및 메시지 수 증가)를 수용할 수 있어야 합니다. 업무와 응용 프로그램이 늘어나면 이는 매우 중요한 요구 사항이 됩니다.

가용성. 메시징 시스템은 거의 다운 타임 없이 작동해야 합니다. 즉 오류 발생 시 시스템이 메시징 서비스를 계속 제공하기에 충분한 중복을 포함해야 함을 의미합니다.

관리성. 메시징 시스템은 메시지 전달을 모니터하고 관리할 도구를 제공해야 합니다. 관리자는 시스템 자원을 최적화하고 시스템 성능을 조정할 수 있어야 합니다.


JMS 메시지 구조
Message Queue에서 데이터는 JMS 메시지를 사용하여 교환됩니다. JMS 사양에 따라 생성자 클라이언트에 의해 작성된 메시지는 헤더, 등록 정보 및 본문 등 세 부분으로 구성됩니다.

헤더
헤더는 모든 JMS 메시지에서 필수입니다. 헤더 필드에는 메시지 경로 지정 및 식별에 사용되는 값이 포함됩니다.

헤더 값은 다음과 같은 여러 가지 방법으로 설정할 수 있습니다.

- 메시지 생성 또는 전달 프로세스 중 JMS 공급자에 의해 자동으로
- 메시지 생성자를 작성할 때 지정된 설정을 통해 생성자 클라이언트에 의해
- 메시지 단위의 메시지에서 생성자 클라이언트에 의해
JMS에 의해 정의된 헤더 필드에 대한 자세한 내용은 Message Queue Developer’s Guide for Java Clients 또는 Message Queue Developer’s Guide for C Clients를 참조하십시오. 이러한 헤더 필드를 사용하여 메시지의 대상, 만료 시간, 메시지 우선 순위 등을 정의할 수 있습니다.

등록 정보
메시지는 등록 정보라는 선택적 헤더 필드를 포함할 수 있습니다. 등록 정보는 등록 정보 이름과 등록 정보 값 쌍으로 지정됩니다. 메시지 헤더의 확장으로 생각할 수 있는 등록 정보는 데이터를 작성한 프로세스에 대한 정보, 데이터가 작성된 시간 및 데이터 각 부분의 구조를 포함할 수 있습니다. 또한 JMS 공급자는 메시지의 압축 여부 또는 수명이 다했을 때 메시지 처리 방법 등 메시지 처리에 영향을 미치는 등록 정보를 추가할 수 있습니다.

JMS 공급자는 메시지 등록 정보를 선택기로 사용하여 메시지를 정렬하고 경로 지정할 수 있습니다. 생성자 클라이언트는 메시지에 응용 프로그램별 등록 정보를 포함시킬 수 있으며 사용자 클라이언트는 등록 정보가 특정 값을 갖는 메시지만 수신하도록 선택할 수 있습니다. 예를 들어, 사용자 클라이언트는 뉴저지에 있는 시간제 직원에 대한 급여 메시지에 대해서만 관심 분야를 표시할 수 있습니다. 지정된 선택 기준을 만족하지 않는 메시지는 클라이언트로 전달되지 않습니다.

선택기는 사용자 클라이언트 작업을 간소화하고 해당 메시지가 필요하지 않은 클라이언트로 메시지를 전달하는 오버헤드를 없앱니다. 그러나 선택 기준을 처리해야 하는 메시지 서비스에 일부 오버헤드가 추가됩니다. 메시지 선택기 구문과 의미는 JMS 사양에 설명되어 있습니다.

메시지 본문 유형
JMS 메시지의 유형은 표 1-1에 지정된 대로 본문의 내용을 결정합니다.


https://docs.oracle.com/cd/E19435-01/819-2222/concepts.html

https://docs.oracle.com/cd/E19435-01/819-2222/concepts.html

docs.oracle.com