WebSphere MQ 메시지 큐 액세스

EGL은 모든 대상 플랫폼에서 WebSphere® MQ(이전의 MQSeries®) 메시지 큐 액세스를 지원합니다.

다음과 같은 방법으로 이러한 액세스를 제공할 수 있습니다.
  • MQRecord 스테레오타입의 레코드에 대해 WebSphere MQ 관련 EGL 키워드(예: addget next)를 사용하십시오. 이 경우 EGL은 사용자 코드가 처리할 비즈니스 문제에 집중할 수 있도록 WebSphere MQ의 세부사항을 숨깁니다.
  • WebSphere MQ 명령을 직접 호출하는 EGL 함수를 호출하십시오. 이 경우 EGL 키워드가 지원하지 않는 일부 명령을 사용할 수 있습니다.

주어진 프로그램에서 두 접근 방식을 혼합할 수 있습니다. 그러나 우수 사례는 둘 중 하나만 사용하는 것입니다.

접근 방법에 관계없이 옵션 레코드를 통해 다양한 런타임 조건을 제어할 수 있습니다. 옵션 레코드는 특정 글로벌 BasicRecord 파트를 기반으로 하는 변수입니다. EGL은 WebSphere MQ에 대한 호출에서 이러한 변수를 전달합니다. EGL은 옵션 레코드의 기초로 사용할 수 있는 많은 샘플 레코드 파트를 제공합니다.

접근 방법에 따라 EGL이 WebSphere MQ에 대해 옵션 레코드를 사용 가능하게 하는 방법이 결정됩니다.
  • EGL addget next 문으로 작업하는 경우, 이 명령문과 연관된 MQRecord 파트의 특성에서 옵션 레코드를 식별합니다(MQRecord 특성 참조). 특정 옵션 레코드를 식별하지 않으면 EGL은 기본값을 사용합니다.
  • WebSphere MQ를 직접 호출하는 EGL 함수를 호출하는 경우, 함수를 호출할 때 옵션 레코드를 인수로 사용합니다. 이 경우 기본값은 사용할 수 없습니다.
옵션 레코드와 기본적으로 WebSphere MQ에 전달되는 값에 대한 세부사항은 MQRecord를 위한 옵션 레코드의 내용을 참조하십시오. WebSphere MQ 자체에 대한 세부사항은 다음 문서를 참조하십시오.
  • 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 호출)에 의해 큐에 배치된 메시지는 커미트가 발생한 후에만 작업 단위 외부에서 볼 수 있습니다.

큐 액세스 명령문이 작업 단위 내에 있지 않은 경우, 메시지 큐에 대한 각 변경사항은 즉시 커미트됩니다.

includeMsgInTransaction 특성이 MQRecord에 대해 영향을 미치는 경우 WebSphere MQ 관련 EGL add 또는 get next 문은 작업 단위에 임베드됩니다. 생성된 코드에는 다음과 같은 옵션이 있습니다.
  • MQGET의 경우, MQGMO_SYNCPOINT
  • MQPUT의 경우, MQPMO_SYNCPOINT
MQRecord에 대해 includeMsgInTransaction 특성을 지정하지 않으면 큐 액세스 명령문은 작업 단위의 외부에서 실행됩니다. 생성된 코드에는 다음과 같은 옵션이 있습니다.
  • MQGET의 경우, MQGMO_NO_SYNCPOINT
  • MQPUT의 경우, MQPMO_NO_SYNCPOINT

코드가 작업 단위를 끝낼 때 EGL은 데이터베이스, 메시지 큐 및 복구 가능한 파일을 포함하여 프로그램이 액세스한 모든 복구 가능 자원을 커미트하거나 롤백합니다. 이 결과는 시스템 함수(sysLib.commit, sysLib.rollback)를 사용하거나 WebSphere MQ에 대한 EGL 호출(MQCMIT, MQBACK) 시 발생합니다. 적절한 EGL 시스템 함수는 두 경우 모두에 발생합니다.

롤백은 EGL 프로그램이 오류 때문에 조기 종료되는 경우에 발생합니다.

사용자 정의

addget next 문의 기본 처리에 의존하지 않고 WebSphere MQ와의 상호작용을 사용자 정의할 수 있습니다.

EGL은 DataTable 파트의 세트를 제공하여 WebSphere MQ와 상호작용하도록 도와줍니다. EGL이 제공하는 함수는 각 파트를 사용하여 런타임 시 메모리 기반 목록에서 값을 검색할 수 있습니다. 다음과 같은 설치된 EGL 파일을 변경하지 않고 사용자의 프로젝트로 가져와야 합니다.
records.egl
옵션 레코드의 소스인 BasicRecord 파트를 포함합니다. 또한 이러한 레코드가 사용하고 사용자 정의 옵션 레코드의 개발을 지원하는 구조 파트를 포함합니다.
functions.egl
두 개의 함수 세트를 포함합니다.
  • WebSphere MQ에 직접 액세스하는 WebSphere MQ 명령 함수
  • 프로그램에서 사용되는 옵션 레코드에 초기값을 배치하는 데 사용할 수 있는 초기화 함수
mqrcode.egl, mqrc.egl, mqvalue.egl
명령 및 초기화 함수에서 사용되는 EGL DataTable 파트의 세트를 포함합니다.

다음과 같은 태스크를 수행해야 합니다.

  1. 다음 디렉토리의 파일을 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").
  2. 프로그램에서 해당 파트를 더 쉽게 사용하려면 프로그램을 포함하는 파일에 하나 이상의 EGL import 문을 쓰십시오. 가져올 파일이 사용자가 코드를 개발 중인 프로젝트가 아닌 다른 프로젝트에 있는 경우, 사용자의 프로젝트가 그 다른 프로젝트를 참조하는지 확인하십시오.

    세부사항은 Import 문 및 use 문의 내용을 참조하십시오.

  3. 프로그램에서 글로벌 변수를 선언하십시오.
    • mqrc, mqrcode 및 mqvalue DataTables를 위한 use 선언을 포함시키십시오.
    • WebSphere MQ로 전달할 각 옵션 레코드에 대해 옵션 레코드 파트를 typedef로 사용하는 기본 레코드를 선언하십시오. 각 파트에 대한 세부사항은 MQRecord를 위한 옵션 레코드의 내용을 참조하십시오.
  4. 사용자의 함수에서 각 레코드에 대해 가져온 EGL 초기화 함수를 호출하여 WebSphere MQ로 전달할 옵션 레코드를 초기화하십시오. 각 함수에는 레코드 파트 다음에 _INIT가 추가된 이름이 있습니다(예: MQGMO_INIT).
  5. 옵션 레코드의 필드 값을 설정하십시오. 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];
  6. 테이블을 생성해야 하는 경우의 세부사항은 대상 언어가 COBOL인지 또는 Java™인지에 따라 다릅니다. 프로그램에서 사용되는 모든 데이터 테이블을 생성하려면 빌드 디스크립터 옵션 genTables가 기본값을 YES로 설정하도록 허용하십시오. 자세한 정보는 DataTable 파트의 내용을 참조하십시오.

COBOL에서만 지원되는 기능

다음 WebSphere MQ 기능은 COBOL 프로그램을 생성하는 경우에만 지원됩니다.
  • 트리거
  • 분배 목록