사용자 정의 구문 분석기 구성요소 계획

본 주제에서는 사용자 정의 구문 분석기를 개발하기 전에 고려해야 할 개념을 소개합니다. 준비가 되었으면 C로 구문 분석기 작성에 있는 지시사항을 사용하여 구문 분석기를 구성하십시오.

분석

자체 구문 분석기 작성을 시작하기 전에 구문 분석기의 용도가 무엇인지 명확히 하십시오. WebSphere Message Broker에 이미 제공된 함수를 사용하여 대부분의 작업을 수행할 수 있으므로, 특정 작업용 사용자 정의 구문 분석기를 작성할 필요가 없을 수도 있습니다.

사용자 정의 구문 분석기를 구성 및 구현하기 전에 다음을 고려해야 합니다.
  • 사용자 정의 구문 분석기를 작성해야 합니까?

    수행해야 할 대부분의 작업은 WebSphere Message Broker가 제공하는 함수를 사용하여 수행할 수 있습니다. 자체 구문 분석기를 작성하기 전에 수행하고자 하는 작업을 내장 WebSphere Message Broker 함수를 통해 수행할 수 없는지 확인해야 합니다. WebSphere Message Broker의 사용 가능한 구문 분석기가 필요에 맞지 않은 경우, 자체 구문 분석기를 정의하여 내부, 고객별 또는 일반 상용 메시지 형식을 구문 분석할 수 있습니다.

  • WebSphere Message Broker가 도메인이나 메시지 헤더용 구문 분석기를 이미 제공합니까?

    제공된 WebSphere Message Broker 구문 분석기가 입력 메시지를 받아들일 수 있는 메시지 도메인 및 제공된 구문 분석기가 작업할 수 있는 메시지 헤더에 대한 자세한 내용은 구문 분석기를 참조하십시오.

  • 사내 또는 상용 메시징이 구문 분석될 수 있는 형식을 결정합니까?
  • 관련 메시지를 정상적으로 구문 분석하려면 구문 분석기가 Third-Party 소프트웨어와 연결되어야 합니까? 그럴 경우 이 소프트웨어로 API 액세스가 가능하게 하면 스레드 모델이 깨집니까?
  • 멀티 파트 다중 형식 메시지를 처리해야 합니까?

    WebSphere Message Broker는 멀티 파트 다중 형식 메시지를 지원하지 않습니다. 멀티 파트 MRM 메시지는 모두 같은 형식으로 된 메시지로 구성되어야 합니다.

  • 어떤 유형의 구문 분석 전략이 가장 좋은 성능을 냅니까?

    WebSphere Message Broker는 구문 분석기가 메시지의 관련 필드만을 구문 분석할 수 있는 부분 구문 분석을 지원합니다. 부분 구문 분석을 사용하면 시스템 자원을 절약할 수 있습니다.

부분 및 전체 구문 분석

WebSphere Message Broker는 부분 구문 분석을 지원합니다. 개별 메시지에 수백 또는 수천 개의 개별 필드가 있으면, 구문 분석 조작을 완료하는 데 상당한 양의 메모리 및 프로세서 자원이 필요합니다. 개별 메시지 플로우가 이들 필드 중 몇 개만 참조하거나 또는 아무것도 참조하지 않을 수도 있으므로, 각 입력 메시지를 전부 구문 분석하는 것은 비효율적입니다. 이러한 이유로 WebSphere Message Broker에서는 필요에 따른 메시지 구문 분석을 허용합니다. (이로 인해 구문 분석기가 전체 메시지를 모두 한 번에 처리할 수 없는 것은 아니며, 이것만을 전적으로 수행하는 몇몇 구문 분석기가 작성됩니다.)

논리적 메시지의 각 구문 요소에는 요소의 양쪽에 있는 모든 요소가 완료되었는지, 또한 해당 하위 요소가 완료되었는지의 여부를 표시하는 두 개의 비트가 있습니다. 구문 분석은 주로 아래에서 위로, 왼쪽에서 오른쪽으로 완료됩니다. 구문 분석기가 주어진 요소 앞에 오는 동위 요소와 첫 번째 하위 요소를 완료하면, 첫 번째 완료 비트가 1로 설정됩니다. 마찬가지로, 요소의 다음 동위 요소에 대한 포인터와 요소의 최종 하위 요소 포인터가 완료될 때, 다른 완료 비트가 1로 설정됩니다.

부분 구문 분석에서는 브로커가 메시지의 일부가 참조될 때까지 기다렸다가 메시지의 해당 부분을 구문 분석할 구문 분석기를 호출합니다. WebSphere Message Broker 메시지 처리 노드는 계층 구조 이름을 사용하여 메시지 내의 필드를 참조합니다. 이름은 메시지의 루트에서 시작하여 특정 요소를 찾을 때까지 메시지 트리 아래로 진행합니다. 완료 비트가 설정되지 않은 요소가 발견되고 이 요소에서 추가 탐색이 필요하면, 메시지의 필요한 부분을 구문 분석하기 위해 적절한 구문 분석기 시작점이 호출됩니다. 메시지의 관련 부분이 구문 분석되고 적절한 요소가 논리적 메시지 트리에 추가되며 문제의 요소가 완료로 표시됩니다.

전체 비트스트림을 구문 분석하지 않아도 될 경우에는 부분 구문 분석(lazy 구문 분석이라고도 함)을 사용할 수 있습니다. 부분 구문 분석 중에는 요청된 요소가 리턴될 때까지 또는 메시지 트리가 완료된 것으로 표시되고 요청된 요소가 존재하지 않는 것으로 알려질 때까지 구문 분석기가 반복해서 호출됩니다.

전체 구문 분석과 부분 구문 분석 중 어느 것을 수행할 것인지에 대한 선택은 WebSphere Message Broker 내에서 메시지가 처리될 것으로 예상되는 방법에 크게 좌우됩니다. 메시지에 있는 대부분의 필드 요소가 WebSphere Message Broker 내에서의 처리 중에 액세스될 가능성이 크면, 액세스를 시도할 때 메시지의 전체 구문 분석을 수행하는 것이 보다 효율적일 것입니다. 이는 보다 작은 메시지인 경우에 적용됩니다.

그러나 메시지에 있는 대부분의 필드 요소가 WebSphere Message Broker 내에서의 처리 중에 액세스될 가능성이 적으면, 특정 필드에 대한 액세스를 시도할 때 메시지의 lazy 구문 분석을 수행하는 것이 보다 효율적일 것입니다. 이는 특히 메시지 크기가 큰 경우에 적용됩니다.

관련 개념
부분 구문 분석
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
as01403_