Rozróżniamy następujące typy kolejek:
Kolejka lokalna
Jak sama nazwa wskazuje jest to standardowa kolejka znajdująca się lokalnie na menadżerze. Aplikacja
podłączona do danego menadżera może do takiej kolejki czytać i pisać.
Komenda tworząca taką kolejkę może mieć postać:
DEFINE QLOCAL(QUEUE.IN)
gdzie:
QUEUE.IN : nazwa kolejki lokalnej
Kolejka zdalna
Kolejka ta określa lokalny wskaźnik do kolejki znajdującej się na innym "zdalnym" menadżerze kolejek. Pozwala
ona na stworzenie na menadżerze obiektu wskazującego na inną kolejkę na zdalnym menadżerze. Do takiej kolejki
można tylko zapisywać. Jako, że fizycznie kolejka ta znajduje się na innym menadżerze odczyt z niej jest
niemożliwy. Po wrzuceniu komunikatu do takiej kolejki jest on przenoszony do kolejki transmisyjnej z nią
związaną a następnie poprzez proces MCA i związaną z daną kolejką transmisyjna parą kanałów jest on przenoszony
na kolejkę docelową na zdalnym menadżerze.
Komenda tworząca taką kolejkę może mieć postać:
DEFINE QREMOTE(QUEUE.OUT) RNAME(QUEUE.IN) RQMNAME(QM2) XMITQ(QM2_TRANS)
gdzie:
QUEUE.OUT : nazwa kolejki zdalnej
QUEUE.IN : nazwa kolejki docelowej znajdującej się na zdalnym menadżerze
QM2 : nazwa zdalnego menadżera kolejek
QM2_TRANS : nazwa kolejki transmisyjnej
Kolejka aliasowa
Kolejka modelowa
Kolejka dynamiczna
Kolejka dynamiczna jest to specjalna kolejka, która jest tworzona dynamicznie przez aplikacje.
Rozróżniamy kolejki dynamiczne tymczasowe i trwałe. Kolejka tymczasowa jest usuwana zaraz po zakończeniu
aplikacji i odłączeniu się od menadżera kolejek. Kolejka trwała przetrwa zakończenie aplikacji.
To czy stworzona kolejka dynamiczna będzie trwała, czy nie zależy od parametru
DEFTYPE
kolejki modelowej
na podstawie której stworzona zostanie kolejka dynamiczna.
Parametr ten może przyjmować następujące wartości:
PERMDYN : Tworzona kolejka dynamiczna będzie trwała
TEMPDYN : Tworzona kolejka dynamiczna będzie tymczasowa
Przykładowy kod:
String dynamicQueueName="dynam*";
String myQueueManagerName="QM1";
int myOpenOptions=MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
qMgr= new MQQueueManager (myQueueManagerName);
MQQueue dynamicQueue=qMgr.accessQueue(
"SYSTEM.DEFAULT.MODEL.QUEUE", myOpenOptions,myQueueManagerName,dynamicQueueName,null);
...
mqmessage.replyToQueueName=dynamicQueue.name;
Kolejka klastrowa
Kolejka transmisyjna
Kolejka inicjalizacyjna
Powrót
|