Połączenie do menadżera komunikatów

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

Połączenie serwerowe

Za połączenie serwerowe uznajemy takie połączenie, w którym aplikacja podłączająca się do menadżera kolejek znajduje się na tym sąmym serwerze. W takim przypadku połączenie odbywa się lokalnie nie poprzez protokoły sieciowe, tylko poprzez dedykowaną pamięć dzielona. W celu podłączenia się do lokalnego menadżera kolejek należy utworzyć obiekt MQQueueManager .

MQQueueManager qmgr= new MQQueueManager("nazwa_menadżera");

Połączenie Klienckie

W przypadku połączeń klienckich mamy do czynienia z połączeniem aplikacji z menadżerem poprzez protokoły sieciowe (TCP/IP lub inne) w związku, z czym podczas połączenia poza nazwą menadżera musimy podać dodatkowe informacje. Te dodatkowe informacje to:

  • Nazwa maszyny, na której stoi menadżer
  • Nazwa kanału, poprzez który ma nastąpić połączenie oraz port, na którym uruchomiony jest proces nasłuchujący (listener).

Konfiguracji takiego połączenia można dokonać na dwa sposoby. Pierwszy z nich to poprzez klasę MQEnvironment .

MQEnvironment.hostname="nazwa_serwera";


MQEnvironment.port=1414;


MQEnvironment.channel="nazwa_kanalu";


MQQueueManager qmgr= new MQQueueManager("nazwa_menadżera");

W tym przypadku w zmiennych statycznych klasy MQEnvironment umieściliśmy informacje o położeniu menadżera, a jego nazwę podaliśmy identycznie, jak to ma miejsce w przypadku połączenia serwerowego. Wadą tego rozwiązania jest to, ze w przypadku, kiedy w aplikacji łączymy się do więcej niż jednego menadżera to możemy mieć kłopoty z taką aplikacją ze względu na to, ze informacje o połączeniu zapisąne są w zmiennych statycznych, wiec współdzielonych w ramach aplikacji. Rozwiązaniem tego problemu jest drugi sposób połączenia, w którym informacje o połączeniu podawane są jako kolejny parametr w konstruktorze klasy MQQueueManager.

Hashtable conn= new Hashtable();


conn.add(MQC.HOST_NAME_PROPERTY,"nazwa_serwera");


conn.add(MQC.PORT_PROPERTY,1414);


conn.add(MQC.CHANNEL_PROPERTY,nazwa_kanalu);



MQQueueManager qmgr= new MQQueueManager("nazwa_menadżera",conn);

powrót
Zachęcam do przedstawienia swoich uwag i opinii w polu komentarzy.

Komentarze

Dodaj Komentarz