사용자 정의 메시지 처리 노드 계획

메시지 처리 노드가 올바르게 기능하도록 하기 위해 이 노드를 작성하는 지침을 제공합니다. 메시지 처리 노드를 사용하여 메시지를 탐색하는 방법을 설명합니다.

설계 고려사항

메시지 처리 노드를 개발하여 구현하기 전에 다음을 결정해야 합니다.
  • 메시지를 구문 분석할 메시지 구문 분석기
  • 이 메시지 처리 노드의 디폴트 메시지 구문 분석기 속성 값을 대체할 것인지 여부
  • 메시지 처리 노드의 적절한 스레드 모델
  • 메시지 처리의 끝 및 노드가 지원할 트랜잭션 지원
  • 메시지 플로우 설계자가 변경을 위해 외부화해야 할 메시지 처리 노드가 필요로 하는 구성 속성
  • 사용자 정의 노드가 제공할 선택적 노드 API
  • 일반적 개발 문제:

구문 요소 탐색

브로커 인프라스트럭처는 메시지 처리 노드 구현이 메시지의 트리 표현을 검토할 수 있게 하는 기능과, 현재 요소에서 다음으로의 탐색을 가능하게 하는 기능 및 메소드를 제공합니다.
  • 상위
  • 첫 번째 하위
  • 최종 하위
  • 이전(또는 왼쪽) 동위
  • 다음(또는 오른쪽) 동위
이것은 아래 그림에 나와 있습니다. 다른 기능 및 메소드는 요소를 작성하고 요소의 값을 설정 또는 조회하며 트리에 새 요소를 삽입하고 트리에서 요소를 제거하는 기능 및 메소드와 함께, 요소 자체의 조작을 지원합니다. 자세한 정보는 C 노드 유틸리티 함수C 구문 분석기 유틸리티 함수 또는 Javadoc을 참조하십시오.

다른 요소와의 연결이 있는 구문 요소

이 그림에서는 구문 요소를 보여줍니다. 다른 요소에 연결됩니다. 다른 요소는 요소의 왼쪽 및 오른쪽에 있는 이전 동위 및 다음 동위 요소와 요소 아래의 첫 번째 하위 및 최종 하위 요소, 그리고 요소 위에 있는 상위 요소입니다.
다음 그림은 요소 간의 전체 상호 연결 범위를 표시하는 단순 구문 요소 트리를 설명합니다.

구문 요소 트리

이 그림에서는 구문 요소 트리를 보여줍니다. 요소 A는 다이어그램의 맨 위, 요소 B 위에 있고, 요소 B는 요소 C, D 및 E 위에 있으며, 요소 C, D 및 E는 동일한 레벨에 있습니다.

요소 A는 트리의 루트 요소입니다. 이 요소는 루트이므로 상위 요소가 없습니다. 첫 번째 하위 요소는 요소 B입니다. A에 다른 하위 요소가 없으므로, 요소 BA마지막 하위 요소이기도 합니다.

요소 B에는 세 개의 하위 요소가 있습니다(요소 C, DE). 요소 CB첫 번재 하위 요소입니다. 요소 EB마지막 하위 요소입니다.

요소 C에는 두 개의 동위 요소(요소 DE)가 있습니다. 요소 C다음 동위 요소는 요소 D입니다. 요소 D다음 동위 요소는 요소 E입니다. 요소 E이전 동위 요소는 요소 D입니다. 요소 D이전 동위 요소는 요소 C입니다.

아래 그림에서는 WebSphere Message Broker에서 수신하는 일반 메시지 구문 요소의 첫 번째 생성을 보여줍니다. (모든 메시지에 MQRFH2 헤더가 있는 것은 아닙니다.)

일반 메시지 구문 요소의 첫 번째 세대

그림 맨 위에는 루트라는 레이블이 붙은 상자가 있습니다. 하나의 선이 이 상자를 왼쪽 아래에 있는 등록 정보라고 표시된 상자에 연결하고, 다른 선이 오른쪽 아래에 있는 XML이라고 표시된 상자에 연결합니다. 이 둘 사이에는 MQMD 및 MQRFH2라고 표시된 두 개의 상자가 있습니다.

첫 번째 세대인 이들 요소는 종종 "폴더"라고도 하며, 여기서 메시지 헤더 및 메시지 컨텐츠 데이터를 나타내는 구문 요소가 저장됩니다. 이 예에서 루트의 첫 번째 하위 요소는 등록 정보 폴더입니다. 등록 정보의 다음 동위 요소는 수신되는 WebSphere MQ 메시지의 MQMD용 폴더입니다. 다음 동위 요소는 MQRFH2 헤더용 폴더입니다. 마지막으로, 메시지 컨텐츠(이 예에서는 XML 메시지)를 나타내는 폴더가 있습니다.

위의 그림에는 MQMD 및 MQRFH2 헤더가 포함됩니다. MQ메시지 처리 노드에서 수신하는 모든 메시지에는 MQMD 헤더가 포함되며, 포함 가능한 다른 헤더도 많습니다.

XML 메시지 탐색

다음 XML 메시지를 가지고 있다고 가정하십시오.
  <Business>
        <Product type='messaging'></Product>
        <Company>
            <Title>IBM</Title>
            <Location>Hursley</Location>
      <Department>WebSphere MQ</Department>
        </Company>
    </Business>
이 예에서 요소는 다음 유형입니다.
이름 요소
비즈니스, 제품, 회사, 제목, 위치, 부서
값 요소
IBM, Hursley, WebSphere MQ
이름 값 요소
type='messaging'

노드 유틸리티 기능 및 메소드(또는 유사한 구문 분석기 유틸리티 기능)를 사용하여 메시지를 탐색할 수 있습니다. 위에 나와 있는 XML 메시지를 예로 들면, 먼저 cniRootElement 기능과 노드가 이 기능에 대한 입력으로 수신하는 메시지를 호출해야 합니다. Java에서는 수신되는 MbMessage에 대해 getRootElement를 호출해야 합니다. 이것은 요소의 루트를 나타내는 MbElement를 리턴합니다. 사용자 정의 노드가 루트 요소를 수정해서는 안 됩니다.

위의 그림에서는 루트 요소의 최종 하위 요소가 XML 구문 분석 트리를 포함하는 폴더임을 보여줍니다. C 노드에서 cniLastChild(이 기능에 대한 입력으로 이전 호출의 출력과 함께)를 호출하거나 Java 노드에서 루트 요소에 대한 getLastChild 메소드를 호출하여 이 폴더로 탐색할 수 있습니다.

메시지의 맨 위 레벨에는 하나의 요소(<Business>)만 있으므로, cniFirstChild(C) 또는 getFirstChild(Java)를 호출하면 트리의 이 지점으로 이동합니다. cniElementType 또는 getElementType을 사용하여 해당 유형(이름)을 가져오고, 그 다음에 cniElementName 또는 getName을 사용하여 이름 자체(Business)를 리턴할 수 있습니다.

<Business>에는 두 개의 하위 요소 <Product><Company>가 있으므로, cniFirstChild 또는 getFirstChild와 그 다음에 cniNextSibling 또는 getNextSibling을 사용하여 이들을 차례로 탐색할 수 있습니다.

<Product>에는 하위 요소인 속성(type='messaging')이 있습니다. cniFirstChild 또는 getFirstChild를 다시 사용하여 이 요소로 탐색하고, cniElementType 또는 getType을 사용하여 해당 유형(이름-값)을 리턴하십시오. 앞에서와 같이 cniElementName 또는 getName을 사용하여 이름을 가져오십시오. 값을 가져오려면, cniElementValueType을 호출하여 유형을 리턴한 다음 cniElementValue 그룹에서 적절한 기능을 호출하십시오. 이 예에서는 cniElementCharacterValue가 됩니다. Java에서는 getValue 메소드를 사용하십시오. 이 메소드는 요소 값을 나타내는 Java 오브젝트를 리턴합니다.

<Company>에는 세 개의 하위 요소가 있으며, 각 하위 요소에는 값 요소(IBM, HursleyWebSphere MQ)인 하나의 하위 요소가 있습니다. 이미 설명된 기능을 사용하여 이러한 요소로 탐색하고 해당 값에 액세스할 수 있습니다.

요소 트리(또는 일부)를 복사하는 다른 기능도 제공됩니다. 출력 메시지를 작성하기 위해, 요소를 추가 또는 제거하거나 요소의 이름 및 값을 변경하여 사본을 수정할 수 있습니다.

주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
as01395_