Message ID 또는 Correlation ID로 SAP CPI 메시지 찾기
SAP CPI의 Message ID, Correlation ID, Application ID가 어디서 오는지, 모니터와 API에서 검색하는 방법, 메시지와 관련 메시지를 여는 방법을 설명합니다.

파트너가 주문이 실패했다며 ID 하나를 보내 줍니다. 이것은 Message ID일까요, Correlation ID일까요, 아니면 파트너의 주문 번호일까요? 그리고 내 iFlow 중 어느 것이 그것을 처리했을까요? SAP Cloud Integration(SAP CPI)에서 이 ID들은 각각 의미가 다르고 찾는 방법도 다릅니다.
이 글에서는 세 가지 ID, SAP 모니터와 API에서 검색하는 방법, 내 메시지를 찾기 쉽게 만드는 방법, 그리고 어떤 메시지든 관련 메시지와 함께 한 번에 여는 방법을 설명합니다.
Message ID, Correlation ID, Application ID
- Message ID: 메시지 처리 로그(MPL) 하나의 ID입니다. iFlow 안에서는 header
SAP_MessageProcessingLogID에 담기며, HTTPS 발신자는 같은 이름의 응답 header로 이를 호출자에게 돌려줍니다. - Correlation ID: 함께 속한 메시지들의 로그가 공유하는 ID입니다. 예를 들어 어떤 메시지와, 그 메시지가 ProcessDirect나 JMS로 넘긴 메시지들이 공유합니다. header
SAP_MplCorrelationId에 담깁니다. - Application ID: 주문 번호 같은 나만의 비즈니스 키로, header
SAP_ApplicationID에 설정합니다. 모니터에 표시되며 이것으로 검색할 수도 있습니다.
누군가 ID를 보내오면, Message ID로는 메시지 하나를, Correlation ID로는 전체 체인을, Application ID로는 상대가 자기 용어로 말하는 바로 그 메시지를 찾을 수 있습니다.
SAP 모니터에서 검색하기
- Monitor Message Processing을 여세요.
- 메시지가 실행된 시점이 포함되도록 시간 범위를 넓히세요. 선택한 범위 밖의 메시지는 나타나지 않습니다.
- 검색 필드에 ID를 입력하거나, 먼저 iFlow와 상태를 골라 목록을 좁히세요.
- 메시지를 열어 로그와 오류를 확인하고, 지난 1시간 안에 트레이스되었다면 트레이스도 확인하세요.
API로 검색하기
Cloud Integration OData API는 같은 로그를 읽습니다. 스크립트와 지원 도구에서 유용하며, 모니터의 시간 범위에 영향을 받지 않습니다.
GET https://<tenant>/api/v1/MessageProcessingLogs('<Message ID>')
GET https://<tenant>/api/v1/MessageProcessingLogs?$filter=CorrelationId eq '<Correlation ID>'&$orderby=LogStart
GET https://<tenant>/api/v1/MessageProcessingLogs?$filter=ApplicationMessageId eq '<your ID>'호출에는 tenant에서 모니터링 권한을 가진 사용자가 필요합니다.
메시지를 찾기 쉽게 만들기
Message ID도 Correlation ID도 비즈니스 쪽에는 아무 의미가 없습니다. 비즈니스 키를 직접 로그에 쓰세요. Application ID로 쓰고, 모니터에 표시되고 검색할 수 있는 사용자 지정 header 속성(custom header property)으로도 씁니다.
import com.sap.gateway.ip.core.customdev.util.Message
def Message processData(Message message) {
def orderId = message.getProperty("orderId") as String
// Shown and searchable in the monitor as a custom header property.
messageLogFactory.getMessageLog(message)?.addCustomHeaderProperty("OrderId", orderId)
// Shown in the monitor as the message's Application ID.
message.setHeader("SAP_ApplicationID", orderId)
return message
}iFlow 사이에서 전달되어야 하는 값이라면 ProcessDirect와 JMS header에 관한 글에서 각 연결로 무엇이 넘어가는지 설명합니다.
디자이너에서 어떤 메시지든 열기
- 디자이너에서 “Kitegra 도구” 버튼을 클릭하고 “메시지 로그”를 선택하세요. 로그 뷰어가 새 탭에서 열립니다. 뷰어는 디자이너 탭을 통해 SAP를 읽으므로 디자이너 탭을 열어 두세요.
- “Message ID 또는 Correlation ID” 상자에 ID를 붙여 넣고 “찾기”를 선택하세요. tenant의 어떤 iFlow 메시지든 여기서 열립니다.
- 메시지를 “요약”, “Body 및 헤더”, “어댑터”, “저장됨”, “첨부 파일” 탭에서 읽으세요.
- “타임라인” 탭을 여세요. 같은 Correlation ID를 공유하는 모든 메시지가 iFlow, 상태, 시작 시간, 소요 시간과 함께 나열됩니다. 트레이스가 필요하지 않습니다.
- 목록을 둘러보려면 iFlow(또는 “모든 iFlow”), 상태, “시작”과 “종료” 시간으로 필터링하세요.
열린 iFlow의 “메시지” 패널에서 “ID 복사”는 메시지의 ID를 복사하고, “SAP 메시지 모니터에서 열기”는 그 메시지에 대한 SAP 자체 페이지를 엽니다. 찾은 메시지를 트레이스하려면 메시지를 단계별로 트레이스하기를, 일부러 메시지를 만들려면 서비스 키로 HTTPS iFlow 테스트하기를 참고하세요.
Kitegra가 도와주는 방법
로그 뷰어는 Kitegra의 Message Monitor에 속합니다. 메시지 내용은 페이지에 표시될 뿐 저장되거나 Kitegra로 전송되지 않습니다.
Helper, Message Monitor, iFlow Inspector, iFlow Docs는 각각 사용한 iFlow 수를 셉니다. Kitegra 계정이 없으면 모듈당 5개, Free 요금제는 50개, Starter는 100개, Pro는 300개입니다. Startup Team은 멤버마다 300개이며 Growth Team과 Scale Team은 제한이 없습니다. Toolbox와 작업 공간 부가 기능은 iFlow를 세지 않습니다. Kitegra 출시 기간에는 Free 요금제를 포함해 로그인한 모든 사용자가 모든 도구를 쓸 수 있습니다. 요금제 비교하기.
다음 iFlow에서 사용해 보세요
Kitegra가 SAP Integration Suite 디자이너에 무엇을 더하는지 읽어 보거나, Kitegra의 다른 Chrome 확장 프로그램과 함께 살펴보세요.
자주 묻는 질문
SAP CPI에서 Message ID와 Correlation ID의 차이는 무엇인가요?
Message ID는 메시지 처리 로그 하나를 식별합니다. Correlation ID는 함께 속한 메시지들의 로그가 공유하며, 예를 들어 ProcessDirect나 JMS를 거친 메시지들이 공유합니다.
HTTPS 호출의 Message ID는 어디에서 찾나요?
응답 header에서 찾습니다. HTTPS 발신자는 SAP_MessageProcessingLogID를 호출자에게 돌려줍니다.
모니터에서 Message ID를 찾지 못하는 이유는 무엇인가요?
대개 시간 범위가 너무 좁기 때문입니다. 메시지가 실행된 시점이 포함되도록 넓히거나, API로 로그를 읽으세요.
내 주문 번호로 SAP CPI 메시지를 검색할 수 있나요?
네, iFlow가 그 번호를 로그에 쓴다면 가능합니다. 예를 들어 SAP_ApplicationID나 사용자 지정 header 속성으로 씁니다.
로그 뷰어에 트레이스가 필요한가요?
아니요. 메시지 찾기, 요약, 타임라인은 트레이스 없이 동작합니다. 각 단계 전의 본문과 header를 보려면 지난 1시간 안에 TRACE로 실행된 메시지가 필요합니다.
Kitegra가 내가 여는 메시지를 보나요?
아니요. 메시지 내용은 페이지에 표시될 뿐 저장되거나 Kitegra로 전송되지 않습니다.