Der er to forskellige måder at opdage, at der er data i en MQ kø. Enten laver man selv et program, der med jævne mellemrun kontrollerer, om der er kommet data i køen. Eller man overlader denne kontrol til MQ ved at definere en trigger på køen. Denne trigger starter så et program, der kan læse indholdet af køen. Den mest udbredte trigger metode er at starte en CICS transaktion.
De af jer, der har lavet triggere, som starter CICS transaktioner, kender sikkert en masse til de problemer, det kan give, selv om det er mit indtryk, at CICS triggere er blevet mere driftsikre med årene. Men jeg vil ikke komme ind på dette ret store emne i dette tip. Jeg vil i stedet fortælle lidt om hvordan CICS triggering er skruet sammen og hvordan man finder sammenhængen mellem sin MQ kø og den CICS, som den tilhørende transaktion kommer til at køre på.
På selve definitionen af en MQ kø skal man definere navnet på en trigger kø, hvis man vil have trigger på køen. Når der bliver lavet MQPUT på køen og trigger reglerne vil udløse en trigger, så skriver MQ en message på trigger køen. Trigger køen skal være tilknyttet mindst en CICS og CICS'en skal køre for at der kan blive startet en CICS transaktion. På CICS'en kører der en transaktion kaldet CKTI, som konstant overvåger trigger-køen på samme måde som du selv ville være nødt til det, hvis du selv skulle overvåge din egen kø. CKTI starter så den transaktion, som du via en MQ process definition har knyttet til din kø. Herefter er det din transaktions ansvar at behandle data i din MQ kø.
Nogen installationer har rigtig mange CICS systemer kørende og det kan være svært at finde ud af sammenhængen mellem din MQ kø og den CICS, hvor den tilhørende transaktion bliver startet. En måde er at finde trigger-kø navnet på MQ kø definitionen og derefter gennemgå sysout fra samtlige CICS systemer for at finde triggger-kø navnet. Du kan faktisk finde navnet på trigger-køen tilknyttet en CICS ved at lave en FIND 'INITQ=' FIRST i CICS'ens sysout. Denne trigger-kø er gældende ved opstart af CICS'en, men kan udskiftes vha. CKQC-transaktionen, mens CICS'en kører. Dette sker dog næsten aldrig.
Det er selvfølgelig meget tidskrævende at gennemgå samtlige CICS'er, og der findes heldigvis en langt simplere metode. En trigger-kø er en lokal MQ-kø ligesom alle andre og derfor kan du finde ud af, hvem der bruger den vha. fremgangsmåden beskrevet i uge 4/2002. Denne fremgangsmåde vil ganske enkelt vise dig den CICS, som CICS transaktionen tilknyttet din MQ kø vil blive startet på lige nu.