289.7. 트랜잭션 지원

289.7.1. BAPI 트랜잭션 모델

SAP 구성 요소는 SAP와의 아웃바운드 통신을 위해 BAPI 트랜잭션 모델을 지원합니다. 변환된 옵션이 true 로 설정된 URL이 있는 대상 끝점은 필요한 경우 끝점의 아웃바운드 연결에서 상태 저장 세션을 시작하고 교환에 Camel Synchronization 오브젝트를 등록합니다. 이 동기화 오브젝트는 BAPI 서비스 방법 BAPI_TRANSACTION_COMMIT 를 호출하고 메시지 교환 처리가 완료되면 상태 저장 세션을 종료합니다. 메시지 교환 처리가 실패하면 동기화 오브젝트에서 BAPI 서버 메서드 BAPI_TRANSACTION_ROLLBACK 을 호출하고 상태 저장 세션을 종료합니다.

289.7.2. RFC 트랜잭션 모델

TRFC 프로토콜은 고유 트랜잭션 식별자(TID)로 각 트랜잭션 요청을 식별하여 AT-MOST-ONCE 전달 및 처리 보증을 수행합니다. TID는 프로토콜에 보낸 각 요청을 분해합니다. tRFC 프로토콜을 사용하는 애플리케이션은 요청을 보낼 때 고유 TID를 사용하여 요청의 각 인스턴스를 식별해야 합니다. 애플리케이션은 지정된 TID를 여러 번 사용하여 요청을 여러 번 전송할 수 있지만, 프로토콜은 요청이 최대 한 번 수신 시스템에서 전송 및 처리됩니다. 애플리케이션은 요청을 보낼 때 통신 또는 시스템 오류가 발생할 때 지정된 TID로 요청을 재전송하도록 선택할 수 있으며, 따라서 해당 요청이 수신 시스템에서 전달 및 처리되었는지 여부에 대해 의심할 수 있습니다. 통신 오류가 발생할 때 요청을 다시 추가하면 tRFC 프로토콜을 사용하는 클라이언트 애플리케이션이 요청에 대한 EXACTLY-ONCE 전달 및 처리를 보장할 수 있습니다.

289.7.3. 어떤 거래를 사용할 수 있습니까?

BAPI 트랜잭션은 애플리케이션 수준 트랜잭션입니다. 즉, SAP 데이터베이스의 BAPI 메서드 또는 RFC 함수가 수행한 영구 데이터 변경 사항을 ACID에 부과합니다. RFC 트랜잭션은 BAPI 메서드 및/또는 RFC 함수에 대한 요청에 전달 보장(AT-MOST-ONCE, EXACTLY-ONCE, EXACTLY-ONCE-IN-ORDER)을 적용하는 점에서 통신 트랜잭션입니다.

289.7.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를 추적하고 이 정보를 기억하여 TID를 올바른 순서로 재생해야 합니다.

기본적으로 Camel은 Exchange 에서 경로에 있는 위치를 알 수 있는 메커니즘을 제공하지 않습니다. 이러한 메커니즘을 제공하려면 Camel 런타임에 CurrentProcessorDefinitionInterceptStrategy 인터셉터를 설치해야 합니다. Camel SAP 구성 요소가 경로의 TID를 추적하려면 이 인터셉터를 Camel 런타임에 설치해야 합니다. 인터셉터 구성 방법에 대한 자세한 내용은 “tRFC 및 qRFC 대상의 인터셉터” 을 참조하십시오.

289.7.5. 트랜잭션 RFC 서버 끝점

다음 서버 끝점은 RFC 트랜잭션을 지원합니다.

  • sap-trfc-server

Camel Exchange에서 트랜잭션 요청을 처리하는 데 오류가 발생하면 Camel은 표준 오류 처리 메커니즘을 통해 처리 오류를 처리합니다. Camel 경로를 처리하는 Camel 경로가 다시 오류를 호출자로 전달하도록 구성된 경우, 교환을 시작한 SAP 서버 끝점에서 오류를 기록하며 전송 SAP 시스템은 오류에 대한 알림을 받습니다. 그런 다음 SAP 시스템을 보내면 동일한 TID로 다른 트랜잭션 요청을 보내 요청을 다시 처리할 수 있습니다.