WebSphere MQ 메시지 큐 액세스
EGL은 모든 대상 플랫폼에서 WebSphere® MQ(이전의 MQSeries®) 메시지 큐 액세스를 지원합니다.
- MQRecord 스테레오타입의 레코드에 대해 WebSphere MQ 관련 EGL 키워드(예: add 및 get next)를 사용하십시오. 이 경우 EGL은 사용자 코드가 처리할 비즈니스 문제에 집중할 수 있도록 WebSphere MQ의 세부사항을 숨깁니다.
- WebSphere MQ 명령을 직접 호출하는 EGL 함수를 호출하십시오. 이 경우 EGL 키워드가 지원하지 않는 일부 명령을 사용할 수 있습니다.
주어진 프로그램에서 두 접근 방식을 혼합할 수 있습니다. 그러나 우수 사례는 둘 중 하나만 사용하는 것입니다.
접근 방법에 관계없이 옵션 레코드를 통해 다양한 런타임 조건을 제어할 수 있습니다. 옵션 레코드는 특정 글로벌 BasicRecord 파트를 기반으로 하는 변수입니다. EGL은 WebSphere MQ에 대한 호출에서 이러한 변수를 전달합니다. EGL은 옵션 레코드의 기초로 사용할 수 있는 많은 샘플 레코드 파트를 제공합니다.
- EGL add 및 get next 문으로 작업하는 경우, 이 명령문과 연관된 MQRecord 파트의 특성에서 옵션 레코드를 식별합니다(MQRecord 특성 참조). 특정 옵션 레코드를 식별하지 않으면 EGL은 기본값을 사용합니다.
- WebSphere MQ를 직접 호출하는 EGL 함수를 호출하는 경우, 함수를 호출할 때 옵션 레코드를 인수로 사용합니다. 이 경우 기본값은 사용할 수 없습니다.
- An Introduction to Messaging and Queueing(GC33-0805–01)
- MQSeries MQI Technical Reference(SC33-0850)
- MQSeries Application Programming Guide(SC33-0807-10)
- MQSeries Application Programming Reference(SC33-1673-06)
연결
- 메시지 큐에 액세스하는 EGL add 또는 get next 문
- EGL 함수 MQCONN 또는 MQCONNX의 호출
한 번에 하나의 연결 큐 관리자에만 액세스할 수 있습니다. 그러나 해당 연결 큐 관리자의 제어 하에 있는 여러 큐에 액세스할 수 있습니다. 현재 연결 큐 관리자 이외의 큐 관리자에 직접 연결하려면 MQDISC를 호출하여 첫 번째 큐 관리자에서 연결을 끊은 다음 add, get next, MQCONN 또는 MQCONNX를 호출하여 두 번째 큐 관리자에 연결해야 합니다.
또한 연결 큐 관리자와 상호작용할 수 있는 큐 관리자인 원격 큐 관리자의 제어 하에 있는 큐에도 액세스할 수 있습니다. WebSphere MQ 자체가 이러한 액세스를 허용하도록 구성된 경우에만 두 큐 관리자 사이의 액세스가 가능합니다.
연결 큐 관리자에 대한 액세스는 MQDISC를 호출하거나 코드가 끝날 때 종료됩니다.
트랜잭션에 메시지 포함
- EGL get next 문(또는 EGL MQGET 호출)은 커미트가 발생하는 경우에만 메시지를 제거합니다.
- EGL add 문(또는 EGL MQPUT 호출)에 의해 큐에 배치된 메시지는 커미트가 발생한 후에만 작업 단위 외부에서 볼 수 있습니다.
큐 액세스 명령문이 작업 단위 내에 있지 않은 경우, 메시지 큐에 대한 각 변경사항은 즉시 커미트됩니다.
- MQGET의 경우, MQGMO_SYNCPOINT
- MQPUT의 경우, MQPMO_SYNCPOINT
- MQGET의 경우, MQGMO_NO_SYNCPOINT
- MQPUT의 경우, MQPMO_NO_SYNCPOINT
코드가 작업 단위를 끝낼 때 EGL은 데이터베이스, 메시지 큐 및 복구 가능한 파일을 포함하여 프로그램이 액세스한 모든 복구 가능 자원을 커미트하거나 롤백합니다. 이 결과는 시스템 함수(sysLib.commit, sysLib.rollback)를 사용하거나 WebSphere MQ에 대한 EGL 호출(MQCMIT, MQBACK) 시 발생합니다. 적절한 EGL 시스템 함수는 두 경우 모두에 발생합니다.
롤백은 EGL 프로그램이 오류 때문에 조기 종료되는 경우에 발생합니다.
사용자 정의
add 및 get next 문의 기본 처리에 의존하지 않고 WebSphere MQ와의 상호작용을 사용자 정의할 수 있습니다.
- records.egl
- 옵션 레코드의 소스인 BasicRecord 파트를 포함합니다. 또한 이러한 레코드가 사용하고 사용자 정의 옵션 레코드의 개발을 지원하는 구조 파트를 포함합니다.
- functions.egl
- 두 개의 함수 세트를 포함합니다.
- WebSphere MQ에 직접 액세스하는 WebSphere MQ 명령 함수
- 프로그램에서 사용되는 옵션 레코드에 초기값을 배치하는 데 사용할 수 있는 초기화 함수
- mqrcode.egl, mqrc.egl, mqvalue.egl
- 명령 및 초기화 함수에서 사용되는 EGL DataTable 파트의 세트를 포함합니다.
다음과 같은 태스크를 수행해야 합니다.
- 다음 디렉토리의 파일을 EGL 프로젝트로 가져오십시오.
sharedInstallationDir\plugins\ com.ibm.etools.egl.resources_version\MqReusableParts- sharedInstallationDir
- 공유 제품 설치 디렉토리입니다(예: C:\Program Files\IBM\SDP70Shared). 현재 사용 중인 제품을 설치하기 전에 Rational® Developer 제품을 설치하고 유지한 경우에는 이전 설치에서 디렉토리를 지정해야 할 수 있습니다.
- version
- 플러그인의 최신 버전입니다(예: "7.0.100.RFB_20080711_1614").
- 프로그램에서 해당 파트를 더 쉽게 사용하려면 프로그램을 포함하는 파일에 하나 이상의 EGL import 문을 쓰십시오.
가져올 파일이 사용자가 코드를 개발 중인 프로젝트가 아닌 다른 프로젝트에 있는 경우,
사용자의 프로젝트가 그 다른 프로젝트를 참조하는지 확인하십시오.
세부사항은 Import 문 및 use 문의 내용을 참조하십시오.
- 프로그램에서 글로벌 변수를 선언하십시오.
- mqrc, mqrcode 및 mqvalue DataTables를 위한 use 선언을 포함시키십시오.
- WebSphere MQ로 전달할 각 옵션 레코드에 대해 옵션 레코드 파트를 typedef로 사용하는 기본 레코드를 선언하십시오. 각 파트에 대한 세부사항은 MQRecord를 위한 옵션 레코드의 내용을 참조하십시오.
- 사용자의 함수에서 각 레코드에 대해 가져온 EGL 초기화 함수를 호출하여 WebSphere MQ로 전달할 옵션 레코드를 초기화하십시오. 각 함수에는 레코드 파트 다음에 _INIT가 추가된 이름이 있습니다(예: MQGMO_INIT).
- 옵션 레코드의 필드 값을 설정하십시오. mqvalue DataTable에는 단일 필드 행이 있으며, 각각은
WebSphere MQ 문서에서 설명하는 기호에 해당합니다. 다음 예제에서처럼
mqvalue DataTable의 필드 중 하나를 사용하여 옵션 레코드의 필드 값을 설정할 수 있습니다.
mqgmo.options = mqvalue.mqgmo_lock[1];다음 예제와 같이 값을 추가하여 옵션 레코드의 숫자 필드를 값의 조합으로 설정할 수 있습니다.mqgmo.options = mqvalue.mqgmo_lock[1] + mqvalue.mqgmo_accept_truncated_msg[1] + mqvalue.mqgmo_browse_first[1]; - 테이블을 생성해야 하는 경우의 세부사항은 대상 언어가 COBOL인지 또는 Java™인지에 따라 다릅니다. 프로그램에서 사용되는 모든 데이터 테이블을 생성하려면 빌드 디스크립터 옵션 genTables가 기본값을 YES로 설정하도록 허용하십시오. 자세한 정보는 DataTable 파트의 내용을 참조하십시오.
COBOL에서만 지원되는 기능
- 트리거
- 분배 목록