WebSphere Message Broker 실행 모델은 일련의 노드를 통해 메시지 플로우를
실행하는 데 사용되는 시스템입니다.
실행 그룹이 초기화되면 해당 LIL을 런타임에 사용할 수 있습니다. 실행 그룹 런타임 프로세스는 전용 구성 스레드를 시작하고 생성(spawn)합니다. 메시지 플로우 실행 환경에서 메시지 플로우는 스레드에 안전합니다. 일련화 문제를
고려하지 않고 다수의 스레드에서 동시에 메시지 플로우를 실행할 수 있습니다. 구현하는 사용자 정의 노드가 이 스레드 모델을 손상시켜서는 안 됩니다. 다음 사항에 주의하십시오.
- 메시지 플로우로 송신되는 입력 메시지는 이를 수신한 스레드에 의해서만
처리됩니다. 메시지 처리 중에 스레드 또는 컨텍스트 스위치가 발생하지 않습니다.
- 메시지 플로우에서 액세스하는 데이터 구조는 단일 스레드에만 표시되며,
이러한 데이터 구조는 처리 중인 메시지의 지속 기간 동안만 존재합니다.
- 메시지 플로우의 단일 인스턴스는 메시지 플로우 스레드 풀에 있는 모든
스레드 간에 공유됩니다. 이것은 상태를 포함하지 않는 점에서 메시지 플로우 노드의 작동과 관련이 있습니다.
- 실행 그룹의 메모리 요구사항은 추가 OS 스레드에서 실행 중인 메시지 플로우로부터
심하게 영향을 받지 않습니다.
- 메시지 플로우 실행 환경은 개념상 프로시저 프로그래밍과 유사합니다. 메시지 플로우에 삽입하는 노드는 기능 호출 인터페이스로 호출되는
서브루틴과 유사합니다. 그러나 WebSphere Message Broker에서 실행 모델은 매개변수가 입력 메시지
데이터 형식으로 전달되는 "호출-리턴" 인터페이스이기 보다는 "전달 및 리턴"
모델로서 참조됩니다.
- WebSphere Message Broker 메시지 플로우는 본질적으로 스레드에 안전하며, 둘 이상의 스레드에서
동시에 실행될 수 있습니다.
예를 들면, 사용자 정의 노드를 사용하여 메시지를 처리하고 동시에 사용자
정의 구문 분석기를 사용하여 수신되는 메시지를 구문 분석할 경우, 노드와
구문 분석기 둘다에 구현 기능이 포함됩니다. 브로커는 특정 이벤트가 발생할
때 이러한 구현 기능을 호출하거나 콜백합니다.
입력 메시지가 해당 입력 노드에서 브로커로 수신되면, 이 메시지가 사용자 정의
노드로 송신됩니다.
- C 노드의 경우 브로커는 사용자 정의 노드에 대한
cniEvaluate 함수를 호출합니다.
cniEvaluate 함수에 대한
정보는 cniCreateNodeContext를 참조하십시오.
- Java 노드의 경우 브로커는 사용자 정의 노드가 구현한
evaluate 메소드를 호출합니다.
노드가 메시지를 조회하여 수행할 작업을 결정할
경우 노드가 기록된 언어에 따라 C 유틸리티 함수 또는 Java 메소드를 호출합니다. 그런 다음 브로커는 구현 기능 중 하나에서
사용자 정의 구문 분석기를 호출합니다. 그러면 WebSphere Message Broker 구문 분석 트리 빌드를 시작하도록 구문 분석기로 지시됩니다. 구문 분석기는 구문 분석 트리에 요소를 작성한 유틸리티 함수를 호출하여 트리 빌드를 시작합니다. 브로커는 구문 분석기를 한 번이 아닌 여러 번 호출할 수 있습니다.