21장. 신뢰할 수 있는 메시징 활성화
초록
Apache CXF는 WS-RM(WS-Reliable Messaging)을 지원합니다. 이 장에서는 Apache CXF에서 WS-RM을 활성화하고 구성하는 방법을 설명합니다.
21.1. WS-RM 소개
21.1.1. 개요
WS-ReliableMessaging(WS-RM)은 분산 환경에서 메시지를 안정적으로 전달하는 프로토콜입니다. 이를 통해 소프트웨어, 시스템 또는 네트워크 장애에 있는 분산 애플리케이션 간에 메시지를 안정적으로 전달할 수 있습니다.
예를 들어 WS-RM을 사용하면 올바른 메시지가 네트워크 간에 정확히 한 번, 올바른 순서로 전달되도록 할 수 있습니다.
21.1.2. WS-RM 작동 방식
WS-RM은 소스와 대상 끝점 간의 메시지를 안정적으로 전달할 수 있도록 합니다. 소스는 메시지의 초기 발신자이며 대상은 그림 21.1. “웹 서비스 신뢰할 수 있는 메시징” 에 표시된 대로 최종 수신자입니다.
그림 21.1. 웹 서비스 신뢰할 수 있는 메시징
WS-RM 메시지의 흐름은 다음과 같이 설명될 수 있습니다.
-
RM 소스는
CreateSequence
프로토콜 메시지를 RM 대상에 보냅니다. 여기에는 승인을 수신하는 끝점에 대한 참조가 포함됩니다(wsrm:AcksTo
끝점). -
RM 대상은
CreateSequenceResponse
프로토콜 메시지를 RM 소스로 다시 보냅니다. 이 메시지에는 RM 시퀀스 세션의 시퀀스 ID가 포함되어 있습니다. -
RM 소스는 애플리케이션 소스에서 보낸 각 메시지에 RM
시퀀스
헤더를 추가합니다. 이 헤더에는 시퀀스 ID와 고유한 메시지 ID가 포함됩니다. - RM 소스는 각 메시지를 RM 대상으로 전송합니다.
-
RM 대상은 RM
SequenceAcknowledgement
헤더가 포함된 메시지를 전송하여 RM 소스에서 메시지를 수신함을 확인합니다. - RM 대상은 정확히once-in-order 방식으로 애플리케이션 대상에 메시지를 전달합니다.
RM 소스는 아직 승인을 받지 못했음을 메시지를 다시 전송합니다.
첫 번째 재전송 시도는 기본 재전송 간격 후에 수행됩니다. 기본적으로 지수 백오프 간격 또는 고정 간격으로 연속 재전송 시도가 수행됩니다. 자세한 내용은 21.5절. “WS-RM 구성” 에서 참조하십시오.
이 전체 프로세스는 요청과 응답 메시지 모두에 대해 대칭적으로 발생합니다. 즉, 응답 메시지의 경우 서버는 RM 소스 역할을 하며 클라이언트는 RM 대상 역할을 합니다.
21.1.3. WS-RM 전달 보장
WS-RM은 사용된 전송 프로토콜에 관계없이 분산 환경에서 안정적인 메시지 전달을 보장합니다. 안정적인 전달이 보장되지 않는 경우 소스 또는 대상 끝점에서 오류를 기록합니다.
21.1.4. 지원되는 사양
Apache CXF는 다음 버전의 WS-RM 사양을 지원합니다.
- WS-ReliableMessaging 1.0
(기본값) 2005년 2월 제출 버전에 대한 수정 사항은 현재 최신 버전이 아닙니다. 그러나 이전 버전과의 호환성을 위해 이 버전이 기본값으로 사용됩니다.
WS-RM의 버전 1.0은 다음 네임스페이스를 사용합니다.
http://schemas.xmlsoap.org/ws/2005/02/rm/
WS-RM의 이 버전은 다음 WS-Addressing 버전과 함께 사용할 수 있습니다.
http://schemas.xmlsoap.org/ws/2004/08/addressing (default) http://www.w3.org/2005/08/addressing
WS-RM의 2005년 2월 제출 버전을 준수하기 위해 첫 번째 WS-Addressing 버전(Apache CXF의 기본값)을 사용해야 합니다. 그러나 대부분의 다른 웹 서비스 구현이 최신 WS-Addressing 사양으로 전환되었으므로 Apache CXF를 사용하면 WS-A 버전을 선택하여 상호 운용성을 용이하게 할 수 있습니다( 21.4절. “런타임 제어”참조).
- WS-ReliableMessaging 1.1/1.2
공식 1.1/1.2 웹 서비스 신뢰할 수 있는 메시징 사양에 해당합니다.
WS-RM의 버전 1.1 및 1.2에서는 다음 네임스페이스를 사용합니다.
http://docs.oasis-open.org/ws-rx/wsrm/200702
WS-RM의 1.1 및 1.2 버전에서는 다음 WS-Addressing 버전을 사용합니다.
http://www.w3.org/2005/08/addressing
21.1.5. WS-RM 버전 선택
다음과 같이 사용할 WS-RM 사양 버전을 선택할 수 있습니다.
- 서버 측
- 공급자 측에서 Apache CXF는 WS-ReliableMessaging 버전을 클라이언트에서 사용하고 적절하게 응답합니다.
- 클라이언트 측
- 클라이언트 측에서 WS-RM 버전은 클라이언트 구성에서 사용하는 네임스페이스( 21.5절. “WS-RM 구성”참조)에 따라 결정되거나 런타임 제어 옵션을 사용하여 WS-RM 버전을 재정의해야 합니다( 21.4절. “런타임 제어”참조).