이 주제에서는 BLOB 도메인에 포함된 메시지를 처리하는 데 특정한 정보 및 일반 BLOB 구문 분석기에 의해 구문 분석된 정보를 제공합니다.
BLOB 메시지는 사전정의된 구조를 갖고 있지 않으므로 BLOB 메시지의 컨텐츠를 가공할 수 없습니다. 그러나, 비트스트림 내의 알려진 위치를 사용하여 컨텐츠를 참조하고 컨텐츠에 대한 최소 지식으로 메시지를 처리할 수 있습니다.
BLOB 메시지 본문 구문 분석기는 다른 메시지 본문 구문 분석기가 수행하는 것과 동일한 방법으로 트리 구조를 작성하지 않습니다. 트리에는 데이터를 포함하는 BLOB이라고 하는 하위 요소를 갖는 BLOB 루트 요소가 있습니다.
BLOB 데이터 내의 특정 정보 조각의 위치를 알고 있을 경우, 부속 문자열을 사용하여 메시지 컨텐츠를 참조할 수 있습니다. 예를 들어, 다음과 같은 표현식은 메시지 본문의 10번째 바이트를 식별합니다.
InputBody.BLOB.BLOB[10]
다음 표현식은 오프셋 10에서 시작하는 메시지 데이터의 10바이트를 참조합니다.
SUBSTRING(InputBody.BLOB.BLOB from 10 for 10)
이 예에서는 가변 길이 BLOB 메시지를 가공하는 방법을 표시합니다. 이 예는 가변 길이 BLOB 메시지를 수신하고, MRM 구문 분석기를 호출하여 일부 필드를 구문 분석하며, 구문 분석된 정보에 기초하여 출력 메시지를 올바른 출력 큐로 라우트하는 메시지 플로우를 구성했다고 가정합니다.
입력 메시지는 임베드된 NULL('x00')을 포함한다고 가정하므로, 널(null) 종료된 것으로 정의될 수 없습니다.
이 예에서는 다음을 수행하는 데 필요한 ESQL을 보여줍니다.
이를 수행하여 BLOB 메시지가 다음에 오는 정수 길이 필드로 메시지 모델을 정의할 수 있습니다.
이 예에서는 BLOB 메시지를 CWF로 변환하고, 메시지를 처리하며, 추가된 길이 필드를 제거하는 방법도 보여줍니다.
이 예에서 입력 레코드의 형식은 다음과 같습니다.
이 필드는 고객 정의 기준에 따라 다른 큐로 메시지를 라우트하는 하나의 정수로 사용됩니다.
다음 요소 및 유형을 포함하는 새 메시지 BLOB_Example을 정의하십시오.
이 절에서는 메시지 플로우의 특성에 대해 설명합니다. 이 예제 플로우를 구현하려면, 메시지 플로우 정의를 완료해야 하며(예를 들어, 여기에서 거짓, 알 수 없음, 실패 경우를 처리하는 데 사용되는 출력 노드를 바꾸기 위해 세 개의 서브플로우를 작성하여), 해당 전개 및 실행에 필요한 지원을 제공해야 합니다(예를 들어, 플로우를 전개하는 브로커에 대한 큐 관리자에 인바운드 및 임의의 아웃바운트 큐를 작성하여).
이 서브플로우는 예상된 형식(Filter 노드에서 수행된 테스트가 참을 리턴했음)의 메시지를 핸들링합니다. 성공한 메시지는 원래 형식으로 출력 큐에 기록됩니다. 메시지가 MRM에서 BLOB으로 다시 변환되며, 추가된 4바이트(필드 B_LEN)가 제거됩니다.
이 서브플로우의 경우: