Meny Meny Framåt

Transaction & Messaging Congress 96

Using MQSeries in CICS Applications

Onsdag 6/11 10.00
Stuart Jones, IBM Hursley

Jones drog igenom den grundläggande tekniken om MQSeries som alla sessioner tagit upp, men det var en del synpunkter som gäller för transaktionsmiljöer, som CICS, som var intressanta:

Access to existing CICS Transaction
Existerande transaktioner som körs i CICS kan användas med hjälp av MQ för att ge andra system möjligheten att köra CICS-applikationer (tex WWW, Notes). än så länge finns det dock ingen brygga mellan CICS och MQ, så som det finns för IMS. Det är utlovat och kommer någon gång i slutet av 1997. Om man ska brygga data mellan CICS och MQ idag måste man skriva den själv. Antingen ett program på klientsidan som läser en MQ-kö och startar CICS-transaktioner i hosten för att få köra programmet (via ECI eller EPI). Det andra sättet är att skriva bryggan i hosten och där ta emot MQ-meddelandet och sedan STARTa eller LINKa programmet. Hur man än gör är det ett eget arbete att skriva en sådan brygga, tyvärr.

CICS and MQSeries on MVS
Det är ett TRUE som hanterar MQ-APIt i CICS. Anropen från CICS-program går via en MQ-stubbe i programmet vidare genom TRUEt som köar anropet mot 8 stycken TCBer. En TCB blockeras av ett CICS-program endast under det MQ-anropet, inte som i vissa databasanrop där en TCB blockeras under en hel connect-session. Det här gör att man inte behöver oroa sig för att de 8 ska vara för få.
Det går att välja om man vill använda sig av syncpoint vid hantering av meddelanden, och om man vill att meddelanden skall ingå i transaktionen tar CICS hand om allt som har med den att göra, commit eller rollback.
Transaktionen suspenderas under tiden ett MQ-anrop körs! Därför har IBM lagt till andra typer av WAIT i MQGET-kommandot för att lösa det här. Hur det fungerar finns specificerat i dokumentationen och lite i de papper jag har uppe hos mig.

För distribuerad meddelandehantering och kommunikation utanför den egna MVS-miljön finns det två varianter att använda sig av:


CICS and MQSeries on AIX
MQSeries for AIX stöder XA, vilket gör att CICS och MQSeries fungerar alldeles utmärkt tillsammans i AIX. När det gäller CICS/6000 är det dock viktigt att MQSeries initieras innan CICS och avslutas efter CICS.
På samma sätt som för MVS kan man inte använda sig av MQs commit och rollback i AIX-miljön.
Det är också viktigt att CICS körs på samma maskin som MQSeries.

CICS and MQSeries on OS/2
Då CICS OS/2 inte stöder XA-transaktioner finns det inget stöd för 2-phase-commit, utan det är single-phase-commit som gäller. Det gör att om det skär sig i en commit måste rollbacks ta tillbaka manuellt.
Som för AIX är det viktigt att CICS-severn körs på samma maskin som MQSeries.

CICS and MQSeries on NT
Dagens NT-version av CICS är baserad på kodbasen från OS/2. Det innebär samma restriktioner på endast single-phase-commit mm. Dock kommer det att lanseras en ny version för NT under 1997; CICS Trasaction Server for Windows NT. Jag har info och material om den versionen. Den bygger på AIXs kodbas så det är i den nya versionen möjligt att ha XA-stöd och därmed också 2-phase-commit.

Det finns ingen möjlighet att synkronisera klienter som använder CICS och MQSeries remote!

Bibliography
Det finns inga referenser till MQSeries i CICS-dokumentationen utan det är i MQSeries böcker man måste leta för att kunna läsa om MQSeries+CICS: