Kolejki MQ

Autor: Marcin Kasiński
21.01.2011 13:24:00 +0200

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)

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.OUTnazwa kolejki zdalnej
  • QUEUE.INnazwa kolejki docelowej znajdującej się na zdalnym menadżerze
  • QM2nazwa zdalnego menadżera kolejek
  • QM2_TRANSnazwa 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:

  • PERMDYNTworzona kolejka dynamiczna będzie trwała
  • TEMPDYNTworzona 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
Zachęcam do przedstawienia swoich uwag i opinii w polu komentarzy.

Komentarze

Dodaj Komentarz