290.11. 트랜잭션 지원
290.11.1. BAPI 트랜잭션 모델
SAP 구성 요소는 SAP와 아웃 바운드 통신을 위한 BAPI 트랜잭션 모델을 지원합니다. true
로 설정된 Transacted 옵션이 포함된 URL이 있는 대상 끝점은 끝점의 아웃바운드 연결에서 상태 저장 세션을 시작하고 교환에 Camel 동기화 오브젝트를 등록합니다.
이 동기화 오브젝트는 BAPI 서비스 메서드 BAPI_TRANSACTION_COMMIT
를 호출하고 메시지 교환 처리가 완료되면 상태 저장 세션을 종료합니다. 메시지 교환 처리가 실패하면 동기화 오브젝트에서 BAPI 서버 메서드 BAPI_TRANSACTION_ROLLBACK
을 호출하고 상태 저장 세션을 종료합니다.
290.11.2. RFC 트랜잭션 모델
tRFC 프로토콜은 각 트랜잭션 요청을 TID(Transaction identifier)로 식별하여 AT-MOST-ONCE 전달 및 처리 보장을 수행합니다. TID는 프로토콜에서 전송되는 각 요청과 함께 제공됩니다. tRFC 프로토콜을 사용하는 전송 애플리케이션은 요청을 전송할 때 고유한 TID를 사용하여 요청의 각 인스턴스를 식별해야 합니다. 애플리케이션은 지정된 TID로 요청을 여러 번 보낼 수 있지만, 프로토콜은 요청을 수신 시스템에서 한 번에 전달 및 처리하도록 합니다. 애플리케이션은 요청을 전송할 때 통신 또는 시스템 오류가 발생할 때 지정된 TID로 요청을 재전송하도록 선택할 수 있으며, 따라서 수신 시스템에서 해당 요청이 전달되고 처리되었는지 여부에 대해 의심스럽습니다. 통신 오류가 발생할 때 요청을 다시 전송함으로써 tRFC 프로토콜을 사용하는 클라이언트 애플리케이션은 요청에 대해 EXACTLY-ONCE 전달 및 처리 보장을 보장할 수 있습니다.
290.11.3. 어떤 트랜잭션 모델을 사용해야 합니까?
BAPI 트랜잭션은 BAPI 메서드 또는 SAP 데이터베이스의 RFC 기능에 의해 수행되는 영구 데이터 변경 사항에 ACID 보장을 부과한다는 점에서 애플리케이션 수준 트랜잭션입니다. RFC 트랜잭션은 BAPI 방법 및/또는 RFC 기능에 대한 요청에 전송 보장(AT-MOST-ONCE, EXACTLY-ONCE, EXACTLY-IN-ORDER)을 부과한다는 점에서 통신 트랜잭션입니다.
290.11.4. 트랜잭션 RFC 대상 끝점
다음 대상 끝점은 RFC 트랜잭션을 지원합니다.
-
sap-trfc-destination
-
sap-qrfc-destination
단일 Camel 경로에는 여러 트랜잭션 RFC 대상 끝점이 포함되어 여러 RFC 대상에 메시지를 전송하며 동일한 RFC 대상에 메시지를 여러 번 전송할 수 있습니다. 이는 Camel SAP 구성 요소가 경로를 따라 전달되는 각 Exchange
오브젝트에 대해 많은 TID(Transaction ID)를 추적해야 함을 의미합니다. 이제 경로 처리가 실패하고 재시도해야 하는 경우 상황이 매우 복잡해집니다. RFC 트랜잭션 의미 체계는 경로를 따라 각 RFC 대상을 처음 사용한 것과 동일한 TID를 사용하여 호출해야 하며 각 대상의 TID가 서로 구분되어야 합니다. 즉, Camel SAP 구성 요소는 경로를 따라 어떤 TID가 사용되었는지 추적하고 이 정보를 기억하여 TID를 올바른 순서로 재생해야 합니다.
기본적으로 Camel은 교환
에서 경로에 있는 위치를 알 수 있는 메커니즘을 제공하지 않습니다. 이러한 메커니즘을 제공하려면 CurrentProcessorDefinitionInterceptStrategy
인터셉터를 Camel 런타임에 설치해야 합니다. Camel SAP 구성 요소가 있는 경로에서 TID를 계속 추적하려면 Camel 런타임에 이 인터셉터를 설치해야 합니다. 인터셉터 구성 방법에 대한 자세한 내용은 “tRFC 및 qRFC 대상에 대한 인터셉터” 을 참조하십시오.
290.11.5. 트랜잭션 RFC 서버 끝점
다음 서버 끝점은 RFC 트랜잭션을 지원합니다.
-
sap-trfc-server
Camel 교환 처리에서 트랜잭션 요청이 처리 오류가 발생하면 Camel에서 표준 오류 처리 메커니즘을 통해 처리 오류를 처리합니다. 교환이 오류를 다시 호출자에게 전파하도록 Camel 경로 처리가 구성된 경우 교환을 시작한 SAP 서버 끝점은 오류를 기록하며 송신 SAP 시스템에 오류에 대한 알림을 받습니다. 그러면 송신 SAP 시스템은 요청을 다시 처리하기 위해 동일한 TID로 다른 트랜잭션 요청을 전송하여 응답할 수 있습니다.