Sun Java System Message Queue 3.7 UR1 관리 설명서

연결 처리

연결 처리 속성은 연결할 브로커 주소를 지정하고, 필요한 경우 연결 실패를 찾아내어 재연결을 시도하는 방법을 지정합니다. 이러한 속성은 표 16–1에 요약되어 있습니다.

브로커 주소 목록

가장 중요한 연결 처리 속성은 imqAddressList로서, 이 속성은 브로커 또는 연결을 설정할 브로커를 지정합니다. 이 속성의 값은 하나의 브로커 주소 또는 (브로커 클러스터의 경우) 쉼표로 구분된 여러 주소를 포함하는 문자열입니다. 브로커 주소는 사용할 연결 서비스( 연결 서비스 참조)와 연결 설정 방법에 따라 다양한 주소 지정 체계를 사용할 수 있습니다.

이러한 주소 지정 체계는 표 16–2에 요약되어 있습니다.

각 브로커 주소의 일반 형식은 다음과 같습니다.

scheme://address

여기서 scheme은 위에 나열된 주소 지정 체계 중 하나이며 address는 브로커 주소 자체를 나타냅니다. 표 16–2의 마지막 열에 표시된 대로, 주소를 지정하는 정확한 구문은 주소 지정 체계에 따라 다릅니다. 표 16–3에서는 다양한 주소 형식의 예를 보여줍니다.

다중 브로커 클러스터 환경의 주소 목록에는 두 개 이상의 브로커 주소가 포함될 수 있습니다. 첫 번째 연결 시도가 실패하면 Message Queue 클라이언트 런타임에서 목록에 있는 다른 주소로 연결을 시도하며, 연결되지 않은 경우 목록의 마지막 항목에 이를 때까지 계속 시도합니다. 두 개의 추가 연결 팩토리 속성이 이러한 연결 시도 방법을 제어합니다.

자동 재연결

연결 팩토리의 imqReconnectEnabled 속성을 true로 설정하면 연결에 실패한 경우 클라이언트가 브로커에 자동으로 다시 연결할 수 있습니다. imqReconnectAttempts 속성은 지정된 브로커 주소에 대한 재연결 시도 횟수를 제어하고, imqReconnectInterval 속성은 시도 간격(초)을 지정합니다.

브로커 주소 목록(imqAddressList)에 여러 주소가 지정되어 있는 브로커 클러스터에서 실패한 연결은 원래의 브로커에서뿐만 아니라 클러스터의 다른 브로커에서도 복원될 수 있습니다. 원래 브로커로의 재연결이 실패하면 클라이언트 런타임은 목록의 다른 주소로 시도합니다. imqAddressListBehaviorimqAddressListIterations 속성은 이전 절에 설명한 대로 연결 시도되는 주소의 순서와 목록 반복 횟수를 제어합니다. 각 주소에 대해 imqReconnectInterval 밀리초 간격으로 반복을 시도하며, imqReconnectAttempts를 통해 지정된 최대 시도 횟수까지 반복을 시도합니다.

자동 재연결은 메시지 사용에 대한 모든 클라이언트 확인 모드를 지원합니다. 연결이 다시 설정된 후 브로커는 이전에 전달한 확인되지 않은 모든 메시지를 다시 전달하며 해당 메시지에 Redeliver 플래그를 표시합니다. 응용 프로그램 코드에서는 이 플래그를 사용하여 이미 사용되었지만 아직 확인되지 않은 메시지가 있는지 확인합니다. 그러나 비영구 가입자의 경우 연결이 닫히게 되면 브로커에 메시지가 저장되지 않습니다. 따라서 연결이 종료된 상태에서 해당 가입자에 대해 생성된 메시지는 재연결 후에도 전달할 수 없으므로 손실됩니다.자동 재연결 중에는 메시지 생성이 차단됩니다. 메시지 생성자는 연결이 다시 설정될 때까지 브로커로 메시지를 보낼 수 없습니다.

자동 재연결은 연결 페일오버를 제공하지만 데이터 페일오버는 제공하지 않습니다. 실패한 브로커 또는 연결이 끊긴 브로커가 가지고 있는 지속성 메시지 및 기타 상태 정보는 클라이언트가 다른 브로커 인스턴스에 재연결될 때 손실될 수 있습니다. 연결 재설정을 시도하는 동안 Message Queue에서는 클라이언트 런타임이 제공한 객체(세션, 메시지 사용자 및 메시지 생성자)를 유지합니다. 연결 실패 시 잠시 동안 임시 대상도 유지 관리됩니다. 클라이언트가 다시 연결하여 임시 대상에 다시 액세스할 수도 있기 때문입니다. 클라이언트에게 다시 연결하여 이러한 대상을 사용할 수 있는 시간을 제공한 후 브로커는 해당 대상을 삭제합니다. 재연결 시 클라이언트측 상태를 브로커에서 완전히 복원할 수 없는 경우(예: 연결 시간 동안에만 존재하는 트랜잭션된 세션 사용 시) 자동 재연결이 수행되지 않으며 연결의 예외 처리기가 대신 호출됩니다. 그리고 나면 응용 프로그램 코드에 따라 예외, 재연결 및 복원 상태를 파악하게 됩니다.

주기적 연결 테스트(핑)

연결을 주기적으로 테스트하거나 “핑”을 실행하도록 Message Queue 클라이언트 런타임을 구성하면 시도한 메시지 전송이 실패하기 전에 먼저 연결 실패를 감지할 수 있습니다. 이러한 테스트는 메시지를 사용하기만 하고 생성하지는 않는 클라이언트 응용 프로그램에 특히 중요합니다. 그렇지 않으면 연결이 실패한 경우 이러한 응용 프로그램을 찾아낼 수 없기 때문입니다. 메시지를 가끔씩만 생성하는 클라이언트에도 이 기능을 유용하게 사용할 수 있습니다.

연결 팩토리 속성 imqPingInterval은 연결을 핑할 빈도(초)를 지정합니다. 기본적으로 이 간격은 30초로 설정되며 값 -1은 핑 작업을 수행할 수 없습니다.

실패한 핑에 대한 응답은 운영 체제 플랫폼마다 다릅니다. 일부 운영 체제에서는 클라이언트 응용 프로그램의 예외 수신기에 예외가 즉시 발생합니다. 클라이언트에 예외 수신기가 없는 경우에는 다음 번 연결 사용 시도가 실패합니다. 다른 시스템에서는 핑이 성공하거나 버퍼 오버플로가 발생할 때까지 연속적으로 핑을 버퍼링하여 브로커에 대한 연결 설정을 계속해서 시도하기도 합니다.