MainframeSupports
tip uge 25/2001:

MQ er et produkt, der er designet til at sende data (meddelelser) fra en destination til en anden. Alligevel benytter de fleste installationer MQ til såkaldte remote procedure calls (RPC). For at understøtte denne funktionalitet, stiller MQ nogle faciliteter til rådighed, som jeg kort vil gennemgå.

I den såkaldte message descriptor (MD), som følger med alle meddelelser, der sendes via MQ, findes to i denne sammenhæng interessante felter. Det ene er ReplyToQ og det andet er ReplyToQMgr. Før man sender en meddelelse, kan man udfylde ReplyToQ med navnet på den kø, som svaret på meddelelsen (returdata) skal placeres i. Feltet ReplyToQMgr skal man sørge for er blankt.

Når meddelelsen når frem til modtageren, så kan modtageren svare ved at sende sin svarmeddelelse til queue manageren i ReplyToQMgr og kø-navnet i ReplyToQ. MQ sørger for at udfylde ReplyToQMgr med den afsendende queue managers navn, hvis det er blankt ved afsendelsen. For at dette virker kræver det, at kø-navnet i ReplyToQ er navnet på en lokal-kø hos den afsendende queue manager. Lad os se på et eksempel. Først hvad der skal til hos afsenderen:

MD.ReplyToQMgr = '';
MD.ReplyToQ = 'MY.LOCAL.QUEUE';
OD.ObjectName = 'MY.REMOTE.QUEUE';
/* Herefter afsendes meddelelsen */

OD er object descriptoren og ObjectName er den kø, som afsendelsen sker via. Hos modtageren modtages meddelelsen og svaret afsendes således:

OD.ObjectQMgrName = MD.ReplyToQMgr;
OD.ObjectName = MD.ReplyToQ;
/* Herefter afsendes svaret */

For at ovenstående virker hos modtageren, så skal modtagerens XMIT-kø til afsenderen hedde det samme som afsenderens queue manager. Med andre ord, så skal der findes en XMIT-kø hos modtageren, der hedder det samme som navnet i ReplyToQMgr og denne XMIT-kø skal pege på afsenderen. Hvis man ikke har fulgt denne konvention på din installation, så kan det godt være det virker alligevel, da det kan sætte anderledes op. Det vil jeg vende tilbage til i et senere tip.

Hele pointen i denne øvelse er, at man ikke skal definere nogen remote-kø hos modtageren til at svare via. Brugen af en remote-kø vil også gøre, at modtageren kun vil være i stand til at svare på meddelelser fra den samme queue manager, eller rettere: meddelelser fra andre queue managere vil ikke få svar tilbage, da svaret altid vil havne på den samme queue manager, nemlig den som remote-køen peger på.

Til sidst skal det nok nævnes, at gennemførelsen af ovenstående øvelse sandsynligvis vil kræve lidt ekstra RACF-gymnastik. Det vil fremgå af masteren til MQ, hvad det er for autorisationer, der eventuelt mangler. Det kan både være autorisationer hos modtager såvel som afsender, der mangler.

Forrige danske tip        Last tip in english        Tip oversigten