ESQL 변수는 메시지 처리에 도움을 주기 위해 사용하는 데이터 필드입니다.
변수를 사용하려면 먼저 변수를 선언하고 유형을 명시해야 합니다. 변수의
데이터 유형은 고정됩니다. 다른 유형의 값을 지정하는 ESQL을 코드화하는 경우,
대상 데이터 유형에 대한 내재적 캐스트가 구현되거나 예외가 발생합니다(내재적 캐스트가 지원되지 않는 경우).
변수를 정의하고 이름을 제공하려면 DECLARE문을 사용하십시오.
주: ESQL 변수의 이름은 대소문자를 구분하므로 모든 위치에서 대소문자를 올바르게 사용하는 것이
중요합니다. 이를 보장하는 가장 간단한 방법은 항상 대문자 이름을 사용하여 변수를 정의하는 것입니다.
Message Brokers Toolkit은
정의되지 않은 변수를 경고 마커를 사용하여 플래그합니다. 메시지 플로우를 전개하기 전에
이 경고를 모두 제거하는 것이 가장 좋은 방법입니다.
DECLARE문에서 변수에 초기값을 지정할 수 있습니다. 초기값이 지정되지 않은 경우 스칼라 변수는 특수 값 널(NULL)로 초기화되지만
ROW 변수는 비어있음 상태로 초기화됩니다. 그런 다음 SET문을 사용하여 변수의 값을 변경할 수 있습니다.
소스 코드를 포함할 수 있는 세 가지 유형의 노드가 있으므로 ESQL 변수의 사용을 지원합니다.
변수 범위, 수명 및 공유
특정 ESQL 변수를 사용할 수 있는 기간과 범위는
범위, 수명 및 공유로 설명됩니다.
변수의 범위는
변수를 볼 수 있는 범위의 척도입니다. 브로커 환경에서 변수 범위는
일반적으로 개별 노드로 제한됩니다.
변수의 수명은 변수가 값을 보유하는
시간의 척도입니다. 브로커 환경에서 변수의 수명은 변하지만 일반적으로 노드 내 스레드의 수명으로
제한됩니다.
변수의 공유 특성은 각 스레드가
변수의 고유 사본을 갖는지 여부 또는 다수의 스레드 간에 하나의 변수를 공유하는지 여부를 표시합니다. 브로커 환경에서 변수는 일반적으로 공유되지 않습니다.
변수 유형
DECLARE문을 사용하여 세 가지 변수 유형을 정의할 수 있습니다.
- 외부
- 외부 변수(EXTERNAL 키워드로 정의)는 사용자 정의 등록 정보(UDP)라고도 합니다(ESQL의 사용자 정의 등록 정보 참조).
외부 변수는 메시지 플로우의 전체 수명 동안 존재하며, 플로우를 통과하는
모든 메시지에서 볼 수 있습니다. 초기값(선택적으로 DECLARE문으로 설정)은
설계 시 메시지 플로우 편집기에 의해 수정되거나 전개 시 BAR 편집기에 의해 수정됩니다. 이 값은 ESQL로 수정할 수 없습니다.
- 정상
- "정상" 변수는 노드를 통해 전달되는 단일 메시지의 수명을 갖습니다. 이 변수는 해당 메시지에서만 볼 수 있습니다. "정상" 변수를 정의하려면
EXTERNAL 키워드와 SHARED 키워드 모두를 생략하십시오.
- 공유
- 공유 변수를 사용하여 메시지 플로우에서 메모리 내 캐시를
구현할 수 있습니다. 메시지 플로우 응답 시간 최적화를 참조하십시오. 공유 변수는 수명이 길고
플로우를 통해 전달되는 여러 메시지에서 볼 수 있습니다(수명이 긴 변수 참조). 실행 그룹 프로세스의 수명,
플로우 또는 노드의 수명 또는 변수를 선언하는 노드의 SQL의 수명 동안 존재합니다(가장 짧은 수명 동안).
각 브로커가 시작된 후 플로우 또는 노드를 통해 첫 번째 메시지가 전달될 때 초기화됩니다.
BEGIN ... END 명령문의
ATOMIC 옵션도 참조하십시오. BEGIN ATOMIC 구성은 공유 변수에 여러 변경사항이 작성되어야 하는 경우에 유용하며
다른 인스턴스에서 데이터의 중간 상태를 볼 수 없도록 해야 합니다.
특정 변수 유형에 대한 정보는 다음을 참조하십시오.