일괄 처리 지원 수신 어댑터용 인터페이스
수신 어댑터는 항상 일괄 처리로 메시지를 전송합니다. 일괄 처리는 전송 이외의 작업에 사용할 수 있는 데이터베이스 작업 단위입니다. 예를 들어 수신 어댑터는 동일한 일괄 처리에서 어떤 메시지 집합은 전송하고, 다른 메시지 집합은 일시 중단하고 또 다른 메시지 집합은 삭제할 수 있습니다. 동일한 일괄 처리에서 이런 개별 작업을 그룹화하면 필요한 데이터베이스 왕복 횟수가 최소화되어 성능을 최적화하므로 이렇게 그룹화하는 것이 좋습니다.
In-process 및 Isolated 수신 어댑터는 다음 인터페이스를 구현하여 메시지의 일괄 처리를 서버에 전송해야 합니다.
IBTTransport
IBTTransportControl (In-process 어댑터에만 해당)
IBTTransportConfig
IBaseComponent
IPersistPropertyBag
IBTBatchCallBack
다음 단계에서는 수신 어댑터가 서버에 메시지를 전송하기 위해 수행하는 작업의 순서에 대해 설명합니다.
수신 어댑터는 IBTTransportProxy 인터페이스의 GetBatch 메서드를 호출하여 전송 프록시에서 일괄 처리를 가져옵니다. GetBatch 호출에서 어댑터는 IBTBatchCallback 인터페이스 구현에 대한 포인터를 전달합니다.
어댑터는 IBTTransportBatch 인터페이스의 SubmitMessage 메서드를 호출하여 메시지를 일괄 처리에 한 번에 하나씩 추가합니다. solicit-response 메시징과 같은 양방향 작업인 경우 동일한 인터페이스의 SubmitResponseMessage 메서드가 호출되어 응답 메시지를 제출합니다.
모든 메시지가 일괄 처리에 추가되면 어댑터는 IBTTransportBatch 인터페이스의 Done 메서드를 호출하여 일괄 처리를 전송 프록시에 제출합니다. 수신 어댑터는 기본적으로 비동기이므로 어댑터는 즉시 새 일괄 처리를 가져오고 완료를 호출한 후 다른 메시지 제출을 시작할 수 있습니다.
일괄 처리가 처리된 후 메시징 엔진은 전송 프록시를 사용하여 어댑터의 BatchComplete 콜백 메서드를 호출하여 실제 호출을 수행합니다. 제출의 상태 포함하는 BTBatchOperationStatus 개체의 배열이 어댑터에 전달됩니다. 각 개체는 작업 유형에 해당하며 작업이 수행된 각 메시지 상태는 물론 작업의 전체 상태를 포함합니다. 다음 단계에서는 어댑터가 일괄 처리의 상태를 분석하기 위해 수행해야 하는 작업에 대해 설명합니다.
BatchComplete 메서드에 매개 변수로 전달된 전체 일괄 처리 상태 HRESULT 값을 확인합니다. 이 값이 실패로 확인되면 일괄 처리에서 적어도 하나의 작업이 실패하여 전체 일괄 처리를 하나의 엔터티로 전송하지 못한 것입니다. 따라서 어댑터가 잘못된 메시지를 찾고 처음에는 오류를 발생시키지 않은 메시지만 일괄 처리로 다시 전송해야 합니다.
전체 일괄 처리 상태가 성공한 것으로 확인되면 전송 프록시에 제공된 모든 메시지가 디스크에 보관된 것입니다. 그러나 파이프라인이 모든 메시지를 성공적으로 처리한 것은 아닙니다. 파이프라인에서 실패한 메시지가 일시 중단되었을 수도 있습니다. 파이프라인에서 실패한 메시지의 경우 데이터는 디스크에 기록되었으므로 전체 일괄 처리에 성공했다는 상태가 반환됩니다.
매개 변수의 각 작업 유형에
operationStatus
대한 상태 확인합니다. 상태 S_OK 경우 이 작업에 대한 제출이 성공했으며 상태 더 이상 검사 필요가 없습니다. 상태 BTS_S_EPM_MESSAGE_SUSPENDED 일부 메시지가 일시 중단된 경우 BTS_S_EPM_SECURITY_CHECK_FAILED 인증에 필요한 수신 포트에서 일부 메시지가 인증에 실패했음을 의미합니다. E_FAIL 반환되거나 값이 0보다 작은 HRESULT가 있으면 이 작업에 대한 메시지 제출이 실패했습니다.작업 유형에 대한 개별 메시지의 상태를 확인합니다. 제출 작업 유형의 경우 제출에 성공하면 각 메시지의 상태 S_OK 설정됩니다. 메시지가 일시 중단된 경우 BTS_S_EPM_MESSAGE_SUSPENDED 반환됩니다. 메시지가 인증이 필요한 수신 포트에서 인증에 실패한 경우 BTS_S_EPM_SECURITY_CHECK_FAILED 반환됩니다. 게시된 메시지에 대한 구독자가 없는 경우 E_BTS_NO_SUBSCRIPTION 다시 제공됩니다. E_FAIL 반환되거나 값이 0보다 작은 HRESULT가 있으면 메시지 제출에 실패했습니다.
어댑터에 따라 E_FAIL 또는 실패한 HRESULT를 반환하는 메시지를 일시 중단할 수 있습니다.
BatchComplete 메서드는 실행 결과를 나타내기 위해 S_OK 또는 E_FAIL 반환해야 합니다. BatchComplete 메서드가 E_FAIL 또는 음수 HRESULT를 반환하는 경우 전송 프록시는 오류를 기록합니다.
다음 그림은 일괄 처리 지원 수신 어댑터 만들기와 관련된 개체 상호 작용을 보여 줍니다.
메시지의 일괄 처리를 전송하는 수신 어댑터의 워크플로우
참고 항목
어댑터 변수
수신 어댑터 개발
수신 어댑터 인스턴스화 및 초기화
In-Process 수신 어댑터용 인터페이스
Isolated 수신 어댑터용 인터페이스
트랜잭션 일괄 처리 지원 수신 어댑터용 인터페이스
동기 요청-응답 수신 어댑터용 인터페이스