메시지 트리는 브로커가 메시지 본문의 내부 표현을 저장하는 논리 메시지 트리의 일부분입니다.
메시지 트리의 루트를 Root라고 합니다. 메시지 트리는 항상 존재하며 메시지 플로우의 단일 인스턴스 내에서는 노드 간에 전달됩니다.
메시지 트리는 메시지 본문 외에도, 메시지에 있는 모든 헤더를 포함합니다. 구문 분석기에 의해 작성될 경우 트리에는 Properties 서브트리도 포함됩니다(구문 분석기에 설명된 대로). 제공된 구문 분석기에서 메시지 트리가 작성된 경우, 등록 정보 서브트리를 표현하는 요소 다음에 헤더가 오지 않을 수도 있고 여러 개의 헤더가 올 수도 있습니다.
WebSphere MQ Enterprise Transport, WebSphere MQ Mobile Transport 또는 WebSphere MQ Telemetry Transport를 통해 메시지를 수신한 경우, 첫 번째 헤더(두 번째 요소)는 MQMD여야 합니다. 메시지에 포함된 추가 헤더는 메시지에서와 동일한 순서로 트리에 표시됩니다. 메시지 트리의 루트 아래에 있는 마지막 요소는 항상 메시지 본문입니다.
사용자 정의 구문 분석기에서 메시지가 트리가 작성된 경우에는 등록 정보 트리(있을 경우) 다음에 메시지 본문이 옵니다.
메시지 트리 구조가 아래에 표시됩니다. 입력 메시지가 WebSphere MQ 메시지가 아니면 표시된 헤더가 없을 수도 있습니다. 이 트리를 작성한 구문 분석기가 사용자 정의 구문 분석기이면, 등록 정보 트리가 없을 수도 있습니다.
본문 트리는 메시지 컨텐츠(데이터)를 나타내고 해당 컨텐츠의 논리적 구조를 반영하는 하위 요소의 구조(아래에 설명되어 있음)입니다. 구문 분석기에 설명된 것처럼 본문 트리는 구문 분석기(제공된 구문 분석기 또는 사용자 정의 구문 분석기)에 의해 작성됩니다.
구문 분석된 트리 내의 각 요소는 다음 세 가지 유형 중 하나입니다.
메시지 트리를 채우는 방법에 대한 정보는 메시지 트리를 채우는 방법을 참조하십시오.
등록 정보 폴더는 메시지 트리의 첫 번째 요소로 메시지 특성에 대한 정보를 보유합니다.
등록 정보 폴더의 루트를 Properties라고 합니다. 이는 루트 아래의 첫 번째 요소입니다. 내장 구문 분석기에 의해 생성된 모든 메시지 트리는 메시지에 대한 등록 정보 폴더를 포함합니다. 고유 사용자 정의 구문 분석기를 작성하면 구문 분석기가 등록 정보 폴더를 작성하는지 여부를 선택할 수 있습니다. 그러나 일관성을 위해 사용자 정의 구문 분석기에 이 조치를 포함시키는 것이 좋습니다.
등록 정보 폴더는 트리에서 모든 헤더 뒤에, 그리고 메시지 데이터 앞에 작성되어 삽입됩니다. 이 트리는 메시지 플로우 노드에서 다른 등록 정보에서와 동일한 방법으로 조작할 수 있는 표준 등록 정보 세트를 포함합니다. 이 필드 대부분은 지원되는 WebSphere MQ 헤더의 필드(있는 경우)에 맵핑되며, 노드 간에 메시지가 전달될 때 적당한 구문 분석기로 전달됩니다.
예를 들면, MQRFH2 헤더에는 메시지 세트, 유형 및 형식에 대한 정보가 들어 있습니다. 이 값은 등록 정보 폴더에 MessageSet, MessageType 및 MessageFormat으로 저장되어 있습니다. 메시지 처리 노드 내에서 ESQL을 사용하여 이 값에 액세스하려면 등록 정보 폴더에서 이 값을 참조하십시오. 값이 도출된 헤더의 필드를 직접 참조하지 마십시오.
예를 들면, 출력 노드에서 메시지가 비트스트림으로 변환된 경우, 등록 정보 폴더(출력 메시지의 헤더가 아님) 내에 단독으로 남아 있던 등록 정보는 출력 메시지의 어느 부분에도 포함되지 않습니다.
Properties 구문 분석기는 헤더 필드 내의 값이 각 노드에 대한 입력 또는 출력에 있는 등록 정보 폴더에 있는 값과 일치하는지 확인합니다. 노드로부터 엑시트할 때, 등록 정보 구문 분석기는 현재 포함되어 있는 값과 함께 각 헤더 구문 분석기를 호출합니다. 그런 다음, 헤더 구문 분석기에서 다시 값을 요청한 다음 갖고 있는 값으로 갱신합니다. 등록 정보 폴더나 헤더, 또는 둘 다에 있는 값을 갱신하는 노드에 코딩된 ESQL이 있는 경우, 트리가 해당 노드로부터 전달될 때에는 항상 이 값이 일치합니다. 그러나 등록 정보 폴더 및 헤더에서 다른 값으로 필드를 갱신한 경우, 헤더에서 설정한 값이 등록 정보 폴더에서 설정한 값으로 대체됩니다.
메시지 플로우 처리가 완료되면 등록 정보 폴더가 제거됩니다.