지인분이 만드신 프로그램에 Correlation ID 셋팅으로 두 서버나 인터페이스에 대한 상관관계를 만들어 낼수 있는 부분을 보게되어 좀 더 검색을 통해 간략하게 정리를 하려고 합니다.
Correlation ID는 왜 사용하는걸까?
콜러레이션 아이디는 고유성과 기본키로 하나의 메시지에 할당하는 메시지 아이디와 다르게 상관관계에 따라 첫번째 콜러레이션 아이디가 다르고 두번째도 다르고 이런식으로 1:N인 ICO의 여러 타겟시스템에 보내는 구조의 인터페이스에서 봐왔던 아이디였던것 같습니다. 그리고 BPM이나 JMS 그리고 여러 IF 묶여 하나의 시나리오로 수행이 필요한 것들에 대해 동일 메시지 아이디로 인한 상관관계를 만들기 위해서 콜러레이션 아이디 셋팅이 필요해 보입니다.콜러레이션 아이디 셋팅을 위한 순서
예를들어 별개로 개발된 인터페이스가 두개가 하나의 시나리오로 동작을하여 동일한 콜러레이션 아이디로 모니터링화면에서 검색을 해야한다면 아마도 이런식으로 정의가 될것 같습니다.- A인터페이스에서 메시지아이디 추출(자바매핑)
- A에서 B인터페이스 호출시 추출한 메시지아이디를 보낸다.
- A에서 받은 메시지아이디를 B에서 DynamicConfiguraton을 통해 저장한다.(자바매핑)
- B의 타겟 어댑터안에서 저장된 콜러레이션 아이디를 셋팅한다.(DynamicConfiguration 모듈)
name: key.0, value: http://sap.com/xi/XI/System/Messaging...
name: value.0, value: message.correlationId
위에 순서를 인터페이스 수행에 따라 설명하자면 A인터페이스 ICO를 통한 매핑에서 해당 메시지의 아이디를 읽고 B인터페이스와 상관관계를 만들 아이디를 전달하여 B에서 해당 아이디를 페이로드에 저장하고 B의 타겟어댑터 모듈에서 아이디가 저장된 페이로드를 읽어 콜러레이션 아이디로 설정을 합니다.
이렇게 셋팅된 아이디는 Message Monitor에 Advanced > Identifiers에 Correlation IDSs에서 조회가 가능하며 B인터페이스에 저장여부 확인은 하나의 로그에 Message Content의 DynamicConfiguration에서 저장되어 내용을 확인 가능합니다.
이런기능을 사용하며 지금까지 단일 인터페이스만 개발했던 부분을 NWBPM같은 기능을 사용하지 않고도 여러 인터페이스를 하나의 시나리오(업무)로 개발이 가능하긴한데 예를들어 10개의 인터페이스에서 하나의 IF로 인해 에러가 발생됐을경우 빠르게 모니터링 가능한 방안도 같이 고민해보고 설계할 필요성을 느끼게 됩니다.
더 자세한 내용은
974481 - XI Adapter Framework DynamicConfiguration Module
correlationID in SOAP channel?
Special Access to Mapping Runtime Constants
Adding DynamicConfigurationBean in the Module Processor
댓글 없음:
댓글 쓰기