Message Routing 샘플 ESQL은 아주 조금만 변경하면 다른 메시지 플로우에서 사용하도록 수정할 수 있는 방식으로 설계되었습니다.
ESQL 파일 Routing_using_memory_cache에는 캐시된 샘플 버전에 사용된 모든 ESQL이 포함됩니다. 이 파일을 열고 다음 절을 찾으십시오(ESQL에서 Section 1로 표시됨).
ESQL이 라우트하려는 메시지를 기초로 강조표시된 세 부분(절 1, 2 및 3)을 변경해야 합니다.
재사용할 때 ESQL 나머지를 변경하지 않은 채로 남겨 두어 다른 메시지 플로우에 라우팅 용량을 제공할 수 있습니다. 데이터베이스 테이블은 새 플로우에 필요한 새 항목으로 갱신해야 합니다. 메시지 플로우 프로젝트에서 샘플과 함께 제공되는 setupRoutingDatabase 데이터베이스 스크립트를 참조하십시오.
ESQL을 사용할 때 수행해야 하는 한 가지 중요한 사항은 Compute 노드 등록 정보의 모드가 다음 값 중 하나로 설정되었는지 확인하는 것입니다. 그렇지 않으면 라우팅 정보가 손실됩니다.
데이터베이스 ODBC 소스 이름도 Compute 노드 등록 정보에 추가되어야 합니다.
BEGIN ATOMIC ... END;문은 Routing_using_memory_cache 메시지 플로우에서 한번에 하나의 스레드만이 메모리 캐시를 사용하는지를 확인하는 데 사용됩니다. ESQL에서 이 부분에 대한 단일 스레드 제한은 캐시를 동적으로 새로 고치려는 경우에만 중요합니다. 메시지 플로우 주기 동안 캐시를 새로 고치지 않아도 되는 경우, 최소 블록 범위는 캐시 초기화를 담당할 정도로만 축소될 수 있습니다. 다음 그림은 현재 ESQL을 보여줍니다(ESQL에서 Section 4로 표시됨).
이 수정이 완료되면, 캐시에서 큐 이름 찾아보기가 더 이상 단일 스레드로 진행되지 않습니다. 여러 다른 메시지는 캐시에서 동시에 읽을 수 있습니다.
외부 변수에서는 메시지 플로우에 있는 하드 코드된 값이 메시지 플로우 레벨로 확장되어 전개 시 수정할 수 있습니다. 메시지 플로우는 메시지 플로우 ESQL을 수정하지 않고 전개되는 환경으로 전개 시 사용자 정의될 수 있습니다.
Routing_using_memory_cache 메시지 플로우에는 데이터베이스 찾아보기를 수행하는 데 사용되는
Variable1 변수가 있습니다. 이는 SAMPLE_QUEUES
값으로 하드 코드되었습니다. 전개하는 시스템에 따라 값을 수정할 수 있도록 전개 시 이 변수를 구체화할 수 있습니다. 그러면 각 시스템에서 다른 큐와 큐 관리자 세트를 사용할 수 있지만 여전히 동일한 데이터베이스 테이블이
사용됩니다.
Variable1을 외부 변수로 변경하려면 다음을 수행하십시오.
-- Section 1
DECLARE Variable1 EXTERNAL CHAR 'SAMPLES_QUEUES';
DECLARE Variable2 CHAR;
DECLARE Variable3 CHAR;
이 외부 변수를 사용하려면 ROUTING 데이터베이스 ROUTING_TABLE 테이블에서 다른 Variable1 매개변수가 있는 새 항목을 작성해야 합니다. Variable1 값을 변경하지 않고 플로우를 전개하는 경우, 위에서처럼 작동해야 합니다. (Variable1은 디폴트 SAMPLE_QUEUES로 설정되어야 합니다.)
데이터베이스 테이블의 Message Routing 샘플 캐시에 대한 현재 새로 고침 기준은 다음과 같습니다.
캐시를 새로 고칠 시기를 결정하기 위해 다른 기준을 사용할 수 있는 경우에 이 기준이 유용합니다. 가능한 기준은 다음과 같을 수 있습니다.
샘플은 위의 기준을 사용하도록 쉽게 변경할 수 있습니다. ESQL에서 캐시를 새로 고치기 위한 중요한 위치는 다음과 같습니다.
60초 시간 간격을 사용하여 새로 고침 기준을 변경하려면 다음을 수행하십시오.
IF CacheQueueTable.LastUpDate is null or (CURRENT_TIMESTAMP - CacheQueueTable.LastUpDate) second > INTERVAL '60' SECOND THEN
SET CacheQueueTable.LastUpDate = CURRENT_TIMESTAMP;
100개의 메시지 이후에 새로 고침 기준이 적용되도록 변경하려면 다음을 수행하십시오.
IF CacheQueueTable.MessageCount is null or CacheQueueTable.MessageCount > 100 SECOND THEN
SET CacheQueueTable.MessageCount = 0;
SET CacheQueueTable.MessageCount = CacheQueueTable.MessageCount +1;