실패한 메시지 처리 및 작업중지 모드

Business Process Choreographer는 임시 하부 구조 장애 처리 기능을 제공합니다.

이 섹션에서는 비즈니스 프로세스 컨테이너에서 실패 메시지를 처리하는 방법을 설명합니다. 여기에서는 휴먼 타스크에 대해 실패한 메시지 처리에서 설명한 휴먼 타스크 컨테이너가 사용한 간단한 메커니즘과 비교해서 설명합니다.

장기 실행 프로세스는 일련의 트랜잭션으로 구성됩니다. 트랜잭션은 서버가 메시지 구동 Bean으로 전송하는 JMS(Java Message Service) 메시지로 구분됩니다. 이 Bean은 수신 메시지를 처리를 위해 프로세스 서버로 전달합니다. 각 트랜잭션은 다음 조치로 구성됩니다.

서버가 다음 이유 중 하나 때문에 메시지 구동 Bean에 의해 수신되는 메시지를 처리하지 못할 수 있습니다.

이들 원인에 대한 응답은 다음과 같습니다.

원인 응답
사용 불가능한 하부 구조 메시지 구동 Bean은 지정된 시간 동안 해당 상황에서 복구하려고 시도합니다. 서버가 다시 조작할 때까지 모든 메시지를 사용 가능하게 보존하려고 시도합니다. 이 문제점은 예를 들어 데이터베이스 장애에 의해 유발될 수 있습니다.
손상된 메시지 지정된 재시도 횟수 후에 메시지가 보류 대기열에 들어가고, 여기에서 메시지를 조작하거나 검토할 수 있습니다. 보류 대기열에서 트랜잭션을 재시도하기 위해 메시지를 다시 입력 대기열로 이동할 수 있습니다.

비즈니스 프로세스의 메시지 구현은 다음과 같습니다.

메시지 구동 Bean은 작업중지 모드에서 동작할 때 주기적으로 메시지를 처리하려고 시도합니다. 처리되지 못하는 메시지는 전달 계수나 유지 대기열 순회 계수를 증가시키지 않고 다시 보류 대기열에 놓입니다. 메시지가 성공적으로 처리될 수 있을 때 메시지 구동 Bean이 바로 표준 처리 모드로 전환합니다.

이 기능은 두 자리 숫자 제한, 두 개의 대기열 및 메시지 재시도 작동으로 구성됩니다.

재시도 한계

재시도 한계는 보류 대기열에 넣기 전에 유지 대기열을 통해 메시지를 전송할 수 있는 최대 횟수를 정의합니다.

유지 대기열에 넣으려면 메시지의 처리가 세 번 실패해야 합니다.

예를 들어, 재시도 한계가 5이면 마지막 재시도 루프가 시작되기 전에 메시지가 유지 대기열을 다섯 번 통과해야 합니다(3 * 5 = 15번 실패해야 함). 마지막 재시도 루프가 두 번 이상 실패하면 메시지가 보류 대기열로 갑니다. 이는 메시지가 보류 대기열에 들어가기 전에 (3 * RetryLimit) + 2번 실패해야 함을 의미합니다.

안정적인 하부 구조에서 실행 중인 성능이 중요한 응용프로그램에서는 재시도 한계가 작아야 합니다(예: 1 또는 2).

관리 콘솔에서 이 매개변수를 찾으려면 서버 > 응용프로그램 서버 > server_name을 클릭하십시오. 그런 다음 비즈니스 프로세스 컨테이너 설정 표제에서 비즈니스 프로세스 컨테이너를 클릭하십시오.

유지 대기열 메시지 한계

유지 대기열 메시지 한계는 유지 대기열에 넣을 수 있는 최대 메시지 수를 정의합니다. 유지 대기열이 오버플로우되면 시스템은 작업중지 모드가 됩니다. 한 메시지가 실패하자 마자 시스템이 작업중지 모드에 들어가게 하려면 값을 0으로 설정하십시오. 비즈니스 프로세스 컨테이너가 하부 구조 장애를 추가로 허용하게 하려면 값을 늘리십시오.

관리 콘솔에서 이 매개변수를 찾으려면 서버 > 응용프로그램 서버 > server_name을 클릭하십시오. 그런 다음 비즈니스 프로세스 컨테이너 설정 표제에서 비즈니스 프로세스 컨테이너를 클릭하십시오.

유지 대기열

유지 대기열은 비즈니스 프로세스 컨테이너의 내부 작업 대기열로 다시 이동함으로써 재생되는 실패한 메시지를 보관합니다. 메시지는 세 번 실패하는 경우에 유지 대기열로 들어갑니다. 메시지가 (3 * RetryLimit) + 2번 실패하면 보류 대기열로 들어갑니다. (재시도 한계에 대한 세부사항은 재시도 한계를 참조하십시오.) 유지 대기열이 유지 대기열 메시지 한계에 정의된 한계까지 꽉 차고 다른 메시지가 실패하면 대기열이 오버플로우되고 시스템이 작업중지 모드가 됩니다. 관리자는 이 대기열에 있는 메시지를 조회 타스크를 수행하고 실패한 메시지를 재생하는 내부 대기열로 다시 이동시킬 수 있습니다.

보류 대기열

보류 대기열에는 (3 * RetryLimit) + 2번 실패한 메시지가 들어있습니다. (재시도 한계에 대한 세부사항은 재시도 한계를 참조하십시오.) 관리자는 이 대기열에 있는 메시지를 조회 타스크를 수행하고 실패한 메시지를 재생하는 내부 대기열로 다시 이동시킬 수 있습니다.

메시지 재생

관리자는 보류 또는 유지 대기열에서 내부 대기열로 메시지를 이동시킬 수 있습니다. 관리 콘솔 또는 관리 명령을 사용하여 수행할 수 있습니다.

작업중지 모드

유지 대기열이 오버플로우되면 작업중지 모드가 됩니다. 이러한 경우에는 심각한 임시 하부 구조 장애가 있는 것으로 간주됩니다. 작업중지 모드의 목적은 하부 구조 장애로 인해 대부분의 메시지가 실패할 수 있으므로 시스템이 많은 자원을 사용하지 못하도록 방지하는 것입니다. 작업중지 모드에서 시스템은 다음 메시지를 처리하기 전까지 2초 간 휴면합니다. 메시지가 처리되는 즉시 시스템이 정상 메시지 처리를 재개합니다.

휴먼 타스크에 대해 실패한 메시지 처리

휴먼 타스크 컨테이너는 유지 대기열을 사용하지 않으며 한계를 재시도하지도 않습니다. 대신 실패한 메시지를 저장하는 보류 대기열을 사용하여 메시지를 다시 실행할 수 있습니다.


ⓒ Copyright IBM Corporation 2005, 2006.
이 Information Center는 Eclipse 기술을 기반으로 합니다. (http://www.eclipse.org)