43.7. 오류 메시지 처리
43.7.1. 개요
처리기는 메시지 처리 중에 ProtocolException 예외가 throw될 때 오류 메시지를 처리하는 데 handleFault()
메서드를 사용합니다.
handleFault()
메서드는 처리기 유형에 따라 LogicalMessageContext
개체 또는 CryostatMessageContext
개체를 수신합니다. 수신된 컨텍스트는 처리기의 메시지 페이로드에 대한 구현 액세스를 제공합니다.
handleFault()
메서드는 오류 메시지 처리를 수행하는 방법에 따라 true 또는 false를 반환합니다. 또한 예외를 throw할 수도 있습니다.
43.7.2. 메시지 페이로드 가져오기
handleFault()
메서드에서 수신한 컨텍스트 오브젝트는 handleMessage()
메서드에서 수신한 것과 유사합니다. 컨텍스트의 getMessage()
메서드를 사용하여 동일한 방식으로 메시지 페이로드에 액세스합니다. 유일한 차이점은 컨텍스트에 포함된 페이로드입니다.
LogicalMessageContext
작업에 대한 자세한 내용은 43.3절. “논리 처리기에서 메시지 처리” 을 참조하십시오.
Cryostat MessageContext
작업에 대한 자세한 내용은 43.5절. “Cryostat 처리기에서 메시지 처리” 에서 참조하십시오.
43.7.3. 반환 값 확인
handleFault()
메서드가 메시지 처리를 완료하는 방법은 메시지 처리 진행 방식에 직접적인 영향을 미칩니다. 다음 작업 중 하나를 수행하여 완료합니다.
- true로 반환
-
오류 처리가 정상적으로 계속되어야 한다는 실제 신호를 반환합니다. 체인에서 다음 처리기의
handleFault()
메서드가 호출됩니다. - false 반환
-
오류 처리가 중지되는 잘못된 신호를 반환합니다. 현재 메시지를 처리할 때 호출된 처리기의
close()
메서드가 호출되고 fault 메시지가 디스패치됩니다. - 예외 발생
-
예외를 throw하면 오류 메시지 처리가 중지됩니다. 현재 메시지를 처리할 때 호출된 처리기의
close()
메서드가 호출되고 예외가 디스패치됩니다.
43.7.4. 예
예 43.13. “메시지 처리기의 오류 처리” 메시지 본문을 화면에 출력하는 handleFault()
구현을 보여줍니다.
예 43.13. 메시지 처리기의 오류 처리
public final boolean handleFault(LogicalMessageContext messageContext) { System.out.println("handleFault() called with message:"); LogicalMessage msg=messageContext.getMessage(); System.out.println(msg.getPayload()); return true; }