MQListener
Autor:
Ivana Martać
МИНИСТАРСТВО ФИНАНСИЈА УПРАВА ЦАРИНА СЕКТОР ЗА ИНФОРМАЦИОНЕ ТЕХНОЛОГИЈЕ
MQListener
Uvod
Asinhroni listener
Dolazi uz DB2
Kombinuje messaging sa operacijama nad bazama podataka
Izvodi se kao single multi-threaded process na z/OS UNIX System Services (USS)
Daemon process
MQListener
Task
MQListener Task je kombinacija WSMQ queue i DB2 Stored Procedure
Informacije o MQListener Task-ovima se čuvaju u konfiguracionoj DB2 tabeli
MQListener Task-ovi su grupisani zajedno u imenovane konfiguracije
MQListener
Stored Procedure
Schema.ProcName (IN procIn Type1, OUT procOut Type2)
Poziv Stored Procedure strogo definisan: 1 IN i 1 OUT parametar
IN i OUT parametri mogu biti različitog tipa: VARCHAR, BLOB ili CLOB bilo koje dužine
Stored Procedure interface za MQListener uzima dolazni message kao input i vraća odgovor (REPLY), koji može biti NULL, kao output
Ako je dolazni message Request i postoji specificiran Reply-To queue, message u OUT parametru će biti poslat u specificiran queue.
* moramo koristiti isti Queue Manager za input message (Request) i Reply queue
MQListener
KONFIGURACIJA
Poslovi
1. Poslovi pod DB2
2. Definisanje environment varijabli pod USS
3. Poslovi pod WSMQ
4. MQListener Task - definisanje * za poslove pod DB2 imamo isporučen JCL u hlq.SDSNSAMP : DSNTIJML, DSNTEJSP i DSNTEJML
* za poslove pod WSMQ primer JCL za kreiranje local queue postoji u knjizi DB2 for z/OS: Application Pogramming and Sql Guide.
MQListener KONFIGURACIJA DB2 (1)
JOB DSNTIJML
Pseudocode =
COPYHFS Step1 Copy DSNTEJSP file as untar.cmd file on HFS
UNTARLN Step2 Untar mqlsn.tar file on HFS
CREATBL Step3 Create SYSMQL.LISTENERS table
BINDBRM Step4 Bind the dbrms u PLAN DB2MQLSN
* u step1 i step2 koristi se PATH gde je instaliran MQListener
MQListener KONFIGURACIJA DB2 (2)
CREATBL Step3 -- Kreiranje tabele SYSMQL.LISTENERS
Za definisanje MQListener Task-ova
Svaki definisani Task je slog u tabeli
SYSMQL.LISTENERS
Svakom definisanom Task-u možemo dodeliti naziv
Svaki definisani Task povezuje odredjeni WSMQ queue sa
odredjenom, prethodno kreiranom DB2 Stored Procedure
MQListener KONFIGURACIJA DB2 (3)
BINDBRM Step4 -- BIND za 2 package i 1 PLAN na DB2
Postoji podrška i za 1-fazni i za 2-fazni commit:
db2mqln1 -- verzija za 1-fazni commit –
interakcija sa DB2 i interakcija sa WSMQ su NEZAVISNE
db2mqln2 -- verzija za 2-fazni commit –
interakcije sa DB2 i interakcija sa WSMQ su kombinovane u
jedan unit of work
MQListener KONFIGURACIJA USS
Definisanje environment varijabli
MQLNHOME
PATH
LIBPATH
STEPLIB
MQLSNLOG *
MQLSNTRC i TMPDIR **
* posle JOB-a DSNTIJML, copy i untar DSNTEJSP (step1 i step2), dobijamo
README file u kome je dato uputstvo za definisanje environment variabli
MQListener
KONFIGURACIJA
WSMQ
Odrediti QM koji ćemo koristiti – možemo koristiti neki postojeći ili kreirati novi
Kreirati nekoliko local queue
Input i Output -- queue za aplikaciju Dead-letter (DLQ) i Backout queue Administration queue
* testna Aplikacija koristi 5 local queue
MQListener KONFIGURACIJA Komande(1)
Koristimo MQListener komande.
Komande izvodimo: Direktno – sa komandne linije pod USS u bilo kojem
diektorijumu. Pozivom script file – sa komandne linije pod USS
– iz JCL-a pozivom BPXBATCH utility
help: db2mqln2 help
db2mqln2 help <command>
* primeri za script file imamo pod USS-om u direktorijumu
/MQListener-install-path/mqlsn/listener/script
* primer JCL za poziv BPXBATCH utility imamo u DSNTEJML
MQListener KONFIGURACIJA Komande(2)
Definisanje MQListener Taska -- add:
db2mqln2 add -ssID DST -config TEST -queueManager CSQ1
-inputQueue LQ.IN -procName SPTEST -procSchema IVANA
-numInstances 3
Prikaz definisanog MQListener Taska -- show:
db2mqln2 show -ssID DST -config TEST
Brisanje definisanog MQListener Taska -- remove:
db2mqln2 remove -ssID DST -config TEST –queueManager CSQ1
-inputQueue LQ.IN
MQListener KONFIGURACIJA Komande(3)
Start MQListener-a -- run:
db2mqln2 run -ssID DST -config TEST -adminQueue LQ.ADMIN
-adminQMgr CSQ1
Stop MQListener-a (shutdown ii restart) -- admin:
db2mqln2 admin -adminQueue LQ.ADMIN -adminQMgr CSQ1
-adminCommand shutdown / restart
* shutdown i restart su control messages
MQListener
Obrada greške Ako dodje do greške pri obradi message i message treba da se pošalje u DLQ:
MQListener dodaje na message MQ dead-letter header (MQDLH) strukturu
MQListener setuje reason field u MQDLH strukturi na odgovarajući reason code
MQListener šalje message u DLQ
MQListener
Testna Aplikacija (1)
Potrebno je kreirati Stored Procedure
CREATE PROCEDURE IVANA.SPTEST (IN PIN VARCHAR(25),
OUT POUT VARCHAR(2))
LANGUAGE SQL COLLID IVANA
WLM ENVIRONMENT WLMTEST
P1:
BEGIN
INSERT INTO IVANA.TEST VALUES(PIN);
SET POUT=’OK’;
END P1
MQListener
Testna Aplikacija (2)
Kreirana tabela IVANA.TEST za potrebe testa
CREATE TABLE IVANA.TEST (MSG VARCHAR(25)
CHECK (MSG NOT LIKE ’FAIL%’));
* nad kolonom MSG podignut je CHECK constrain da bi se pri testiranju videlo kako se MQListener ponaša kad Stored Procedure ne uspe da obradi message
H v a l a na pažnji !
MQListener
Autor:
Ivana Martać
МИНИСТАРСТВО ФИНАНСИЈА УПРАВА ЦАРИНА СЕКТОР ЗА ИНФОРМАЦИОНЕ ТЕХНОЛОГИЈЕ
Top Related