53
[email protected] Websphere MQ Series

Mq basic v2.1

Embed Size (px)

Citation preview

Page 1: Mq basic   v2.1

[email protected]

Websphere MQ Series

Page 2: Mq basic   v2.1

[email protected]

Immaginiamo uno scenario molto comune

SYS1 SYS2

Copiare, spostare informazioni da un sistema ad un altro

Cosa dobbiamo considerare?

Page 3: Mq basic   v2.1

[email protected]

Immaginiamo uno scenario molto comune

SYS1 SYS2

CommitmentAtomicitàUna sola copia del messaggio presente nei sistemi

Page 4: Mq basic   v2.1

[email protected]

SYS1 SYS2

Network availabilitySystem availabilityIndipendenza dalla rete

Page 5: Mq basic   v2.1

[email protected]

SYS1 SYS2

CharsetA round-trip conversion ensures the integrity of all character data from the source CCSID to the target CCSID and back to the source

E4B8ADE59BBD???????????中国

Page 6: Mq basic   v2.1

[email protected]

SYS1 SYS2

Indipendenza dalla piattaforma

Page 7: Mq basic   v2.1

[email protected]

Websphere MQ Series – Concetti di base

▪Message & Queing

– Cos’è...•MOM – Message Oriented Middelware

– Middelware: uno strato di astrazione – software bridge tra diversi sistemi

– Prodotti•Websphere MQ •Oracle Advanced Queing (OAQ)•Microsoft MSMQ•Open Source (JBoss Messaging, Apache Active MQ, )

• Java ha definito un’interfaccia: JMS

Page 8: Mq basic   v2.1

[email protected]

Websphere MQ Series

▪MQ = ComunicazioneProgamma-Programma

▪M=Messaging– I programmi comunicano tra di

loro tramite Messaggi, non chiamandosi vicendevolmente

▪Q=Queing– I messaggi si propagano tramite

Code; non devono quindi essere eseguiti in maniera concorrente

Page 9: Mq basic   v2.1

[email protected]

Websphere MQ Series – Concetti di base

▪Messaggio

•Qualsiasi blocco di informazioni da scambiare

• la struttura NON deve essere conosciuta da MQ

• lunghezza virtualmente illimitata, contenuti

•CCSID round-trip

•Qualche standard nella formattazione

Messaggi che attraversano una coda

Page 10: Mq basic   v2.1

[email protected]

Websphere MQ Series – Concetti di base

▪Code

•Contenitore di messaggi

•su i5 l’oggetto CODA e’ implementata con JRN/JRNRCV + streamfiles in IFS

Page 11: Mq basic   v2.1

[email protected]

Websphere MQ Series – Concetti di base

▪Sincrono/Asincrono– SINCRONO

• L’applicativo invia una richiesta e rimane in attesa di una risposta• Richiede le parti attive contemporaneamente• Un’applicazione interattiva potrebbe aver necessità di richiedere informazioni a un

altro sistema e aver necessità immediata della risposta e, contemporaneamente, accodare richieste che possono essere eseguite in un secondo momento

- es. verifica di disponibilità + creazione ed invio di una lettera/e-mail

– ASINCRONO• L’applicativo invia una richiesta/messaggio, il controllo puo’ esserci ma e’ futuro• I servizi non necessariamente devono essere disponibili contemporaneamente• Il poter *rimandare* certe operazioni permette di sganciare l’applicazione

immediatamente e migliorare le prestazioni generali del sistema• I’invio BROADCAST di un messaggio spesso è un’operazione asincrona

- Tabelloni informativi- Pubblicazione di bollettini- Replica di informazioni batch

• Asincrono NON significa LENTO

Analogia con TRG

Analogia con JRN

Page 12: Mq basic   v2.1

[email protected]

Websphere MQ Series – Concetti di base

▪Sincrono

+– Semplice– La riuscita e’ immediatamente verificata– Semplice error-recovery (solitamente)– Ottimi tempi di risposta per real-time (soltiamente

-

– I servizi di entrambe le parti devono essere attivi– Il blocco delle le risorse e’ vincolato alla risposta

Page 13: Mq basic   v2.1

[email protected]

Websphere MQ Series – Concetti di base

▪Asincrono

+– Le richieste non devono essere indirizzate ad un particolare server– I servizi sulla macchina destinazione possono essere down– Nessun blocco di risorse per attesa

-

– I tempi di risposta possono essere non definiti/non definibili– La gestione degli errori puo’ essere piu’ complessa– Il disegno dell’applicazione puo’ essere piu’ difficiel

Page 14: Mq basic   v2.1

[email protected]

Websphere MQ Series▪Ridotta complessità nella fase di integrazione (Stima tIntegrazione

25%)– Semplicità nell’utilizzo delle API– Compatibilità delle API per circa 80 diverse piattaforme

– Eliminazione della logica relativa a DATA-MOVEMENT e STORAGE business logic

Page 15: Mq basic   v2.1

[email protected]

Websphere MQ Series▪Ridotta complessità nella gestione

– WebSphere MQ Explorer tool (amministrazione remota) - Eclypse framework

Page 16: Mq basic   v2.1

[email protected]

Websphere MQ Series

▪WebSphere MQ Explorer tool (amministrazione remota) - Eclypse framework

▪Anche per i5:▪Deve esistere SYSTEM.MQEXPLORER.REPLY.MODEL (*MDL)▪Deve essere in funzione un LISTENER

STRMQMLSR PORT(1414)

▪Deve essere in funzione il CMDServer STRMQMCSVR MQMNAME(QM.COL)

Page 17: Mq basic   v2.1

[email protected]

Websphere MQ Series▪File transfer (no i5)

– Nuova applicazione per File Transfer (dalla V6)– via GUI o via Script lanciati da applicazioni o triggerati da sistema

▪Time-independent processing– Partner in differenti time-zones– Invio dei dati e certezza della consegna– Disaccoppiamento delle applicazioni

• (sistemi up-down in differenti momenti)– Invio asincrono (+performante)

▪Virtualmente si può integrare qualsiasi sistema

Page 18: Mq basic   v2.1

[email protected]

Websphere MQ Series – Concetti di base

▪Disaccoppiamento

– Solo con Transazioni Asincrone– Diversi sistemi (up and down)– es.: paradigma Publish/subscribe

• Chi pubblica non sa a priori a chi invierà i messaggi

•C’è un’entità intermedia [Broker]• Il sottoscrittore decide di ricevere messaggi di proprio interesse

Page 19: Mq basic   v2.1

[email protected]

Websphere MQ Series – Concetti di base

▪Persistenza– Non sempre c’e’ necessità di conservare il messaggio in caso

di restart di una coda•Tabelloni informativi

– E’ piu’ impegnativa dal punto di vista performances

Page 20: Mq basic   v2.1

[email protected]

Websphere MQ Series: Semplificazione

▪Portabilità lato Server

Server• AIX• HP-UX• i5• Linux• Solaris• Windows• z/OS• ...

Page 21: Mq basic   v2.1

[email protected]

Websphere MQ Series: Affidabilità e Integrità

Commitment - Transazioni– Vengono onorati Commit/Rollback nelle applicazioni native rpg

Page 23: Mq basic   v2.1

[email protected]

QM

Q

CH

MQ Objects

Page 24: Mq basic   v2.1

[email protected]

Architettura basata su un singolo QManager

▪Le applicazioni risiedono sulla stessa macchina

▪Il Qmanager provvede all’inoltro dei messaggi (asincroni)

Page 25: Mq basic   v2.1

[email protected]

Architettura basata su un singolo QManager

▪Le applicazioni risiedono sulla stessa macchina o su una diversa macchina

▪IL Qmanager provvede all’inoltro dei messaggi (asincroni)

▪Le applicazioni connesse sono dei CLIENTS del QManager

▪i client hanno limitazioni– Distanza– Disponibilità del servizio

▪L’approccio alla modalità client è scalabile

– da client a server (+QMAnager)

Page 26: Mq basic   v2.1

[email protected]

Architettura basata su più QManager

Page 27: Mq basic   v2.1

[email protected]

Program-to-progam, 1 sistema

Local Queue

Websphere MQ Series

Page 28: Mq basic   v2.1

[email protected]

Websphere MQ Series

Scrivere su una coda

qmHandle=yMQConn('MQFER400'); // connect

qHandle=yMQOpen(qmHandle : ObjDescr1 : Options1 ); // open

yMqPut(qmHandle:qHandle : msg_PutDescr1 : msg_PutOption1 : %len(%trim(dati)): %addr(dati)); //put data

yMQClose(qmHandle:qHandle:Options1); //close

yMQDisc(qmHandle); // disconnect

Page 29: Mq basic   v2.1

[email protected]

Websphere MQ Series

Leggere da una coda

qmHandle=yMQConn('MQFER400'); // connect

qHandle=yMQOpen(qmHandle : ObjDescr1 : Options1 ); // open

DatiLen= yMqGet(qmHandle: qHandle : msg_GETDescr1:msg_GETOption1 :%len(dati):b_ ); //get data

yMQClose(qmHandle:qHandle:Options1); //close

yMQDisc(qmHandle); // disconnect

Page 30: Mq basic   v2.1

[email protected]

Program-to-progam, 2 sistemi

Canale Canale:• TCP/IP• SNA• IPX• ...

Server_1

Server_2

Remote Queue

Local Queue

Websphere MQ Series

Page 31: Mq basic   v2.1

[email protected]

Websphere MQ Series – CODE...

Local QUEUE Coda <Reale>

Remote QUEUE Struttura che descrive una coda

Tx QUEUE (xmitQ) Local Q con compiti speciali

Init QUEUE Local Q con compiti speciali

Page 32: Mq basic   v2.1

[email protected]

Websphere MQ Series

PGM

CFG

Non guardate i contenuti ma osservate l’isolamento programma-configurazione

Page 33: Mq basic   v2.1

[email protected]

API

Disponibili

Websphere MQ Series

Page 34: Mq basic   v2.1

[email protected]

Websphere MQ Series – Implementazione su i5

▪ QMQM (*LIB)▪ QMxxxxxxxx (*LIB) da V7 Naming…▪ QMQMSAMP (*LIB)▪ QMQM/QMQM (*SBSD)▪ QMQM, QMQMADM (*USRPRF)▪ AMQ* (*JRN-*JRNRCV)▪ /QIBM/UserData/mqm (*DIR)▪ /QIBM/ProdData/mqm (*DIR)

Red=oggetti interessati al salvataggio dati Utente

Page 35: Mq basic   v2.1

[email protected]

Il Sottosistema QMQM

Page 36: Mq basic   v2.1

[email protected]

i Qmanager (WRKMQM)

STRSBS QMQM/QMQM[14=Start] oppure STRMQM …

Se non e’ attivo QMQM non si possono avviare i Qmanager

STRMQMCSVR MQMNAME(QM.COL)Abilita diverse funzioni: (MQExplorer, STRMQMMQSC )

Page 37: Mq basic   v2.1

[email protected]

LISTENER

STRMQMLSR PORT(1414)Un listener per ogni Qmanager

Check con Telnet

Page 38: Mq basic   v2.1

[email protected]

Canali… SENDER

Page 39: Mq basic   v2.1

[email protected]

Canali… Cosa occorre controllare?

RUNNING --> OKSTOPPED --> Canale disabilitatoRETRYING --> tentativi di riconnessioneINACTIVE --> OK

Page 40: Mq basic   v2.1

[email protected]

I log….

Page 41: Mq basic   v2.1

[email protected]

I log….

Page 42: Mq basic   v2.1

[email protected]

Il Quiescing di MQ

Endmqm …

Endsbs QMQM

Page 43: Mq basic   v2.1

[email protected]

Il Rimozione ricevitori MQ

RCDMQMIMG OBJ(*ALL) OBJTYPE(*ALL) MQMNAME(QM.COL) DSPJRNDTA(*YES)

Page 44: Mq basic   v2.1

[email protected]

Un esempio di configurazione

Page 45: Mq basic   v2.1

[email protected]

Un esempio di configurazione

RQQ=MYP.LABEL00Q.OUTRMTQM=MQMAS400RMTQ=MYP.LABEL00QTQ=MQFER400.MQMAS400.TQ

TQ-LQQ=MQFER400.MQMAS400.TQUSAGE=XMITQ

Channel - SDRCH=MQFER400.MQMAS400CN=targethost(1414)TQ=MQFER400.MQMAS400.TQ

Channel - RCVCH=MQFER400.MQMAS400

STRMQMLSR 1414 MQMNAME(MQMAS400)

LQQ=MYP.LABEL00Q

QMGR=MQFER400 QMGR=MQMAS400

1

2

4

5

6

3

Page 46: Mq basic   v2.1

[email protected]

Websphere MQ Series - Automatismi

Triggering di un Canale

Attiva automaticamente un canale SDR

non interessa l’applicativo

config: specifica quale canale attivare a fronte di un MSG in partenza

Page 47: Mq basic   v2.1

[email protected]

Un esempio di configurazione

RQQ=MYP.LABEL00Q.OUTRMTQM=MQMAS400RMTQ=MYP.LABEL00QTQ=MQFER400.MQMAS400.TQ

TQ-LQQ=MQFER400.MQMAS400.TQUSAGE=XMITQTRIGGER=YESTRGDATA=MQFER400.MQMAS400INITQ=MQFER400.MQMAS400.CHINITQ

LQQ=MQFER400.MQMAS400.CHINITQ

STRMQMCHLI QNAME(MQFER400.MQMAS400.CHINITQ)MQMNAME(MQFER400) - (Channel initiator)

STRMQMCSVR MQMNAME(MQFER400)

Channel - SDRCH=MQFER400.MQMAS400CN=targethost(1414)TQ=MQFER400.MQMAS400.TQ

Channel - RCVCH=MQFER400.MQMAS400

STRMQMLSR 1414 MQMNAME(MQMAS400)

LQQ=MYP.LABEL00Q

QMGR=MQFER400 QMGR=MQMAS400

1

23

4

6

7

8

5

a

Page 48: Mq basic   v2.1

[email protected]

Un esempio di configurazione

RQQ=MYP.LABEL00Q.OUTRMTQM=MQMAS400RMTQ=MYP.LABEL00QTQ=MQFER400.MQMAS400.TQ

TQ-LQQ=MQFER400.MQMAS400.TQUSAGE=XMITQTRIGGER=YESTRGDATA=MQFER400.MQMAS400INITQ=MQFER400.MQMAS400.CHINITQ

LQQ=MQFER400.MQMAS400.CHINITQ

STRMQMCHLI QNAME(MQFER400.MQMAS400.CHINITQ)MQMNAME(MQFER400) - (Channel initiator)

STRMQMCSVR MQMNAME(MQFER400)

Channel - SDRCH=MQFER400.MQMAS400CN=targethost(1414)TQ=MQFER400.MQMAS400.TQ

Channel - RCVCH=MQFER400.MQMAS400

STRMQMLSR 1414 MQMNAME(MQMAS400)

LQQ=MYP.LABEL00Q

QMGR=MQFER400 QMGR=MQMAS400

1

Page 49: Mq basic   v2.1

[email protected]

Websphere MQ Series - Automatismi

▪Triggering di una Coda– rileva messaggio in arrivo su una coda– profondità...

Programma in ascolto - generico

Scodatore specializzato

Page 50: Mq basic   v2.1

[email protected]

Websphere MQ Series - Automatismi

▪Triggering di una Coda

Page 51: Mq basic   v2.1

[email protected]

Un esempio di configurazione

RQQ=MYP.LABEL00Q.OUTRMTQM=MQMAS400RMTQ=MYP.LABEL00QTQ=MQFER400.MQMAS400.TQ

TQ-LQQ=MQFER400.MQMAS400.TQUSAGE=XMITQTRIGGER=YESTRGDATA=MQFER400.MQMAS400INITQ=MQFER400.MQMAS400.CHINITQ

LQQ=MQFER400.MQMAS400.CHINITQ

STRMQMCHLI QNAME(MQFER400.MQMAS400.CHINITQ)MQMNAME(MQFER400) - (Channel initiator)

STRMQMCSVR MQMNAME(MQFER400)

Channel - SDRCH=MQFER400.MQMAS400CN=targethost(1414)TQ=MQFER400.MQMAS400.TQ

Channel - RCVCH=MQFER400.MQMAS400

STRMQMLSR 1414 MQMNAME(MQMAS400)

LQQ=MYP.LABEL00QINITQ=MYMQ.INITQPRC=MQMAS400.PROCESS

LQQ=MYMQ.INITQ(alimentata da TRG)

PRCPRC=MQMAS400.PROCESS(Fittizio, viene alimentata la INITQ)

QMGR=MQFER400 QMGR=MQMAS400

1

3

2

Page 52: Mq basic   v2.1

[email protected]

Un esempio di configurazione

Channel - RCVCH=MQFER400.MQMAS400

LQQ=MYP.LABEL00QINITQ=MYMQ.INITQPRC=MQMAS400.PROCESS

LQQ=MYMQ.INITQ(alimentata da TRG)

PRCPRC=MQMAS400.PROCESS

UserProgram:MQGET in ascolto su INITQ

FormatoMessaggio: TriggerData:Contiene NOME della Coda che ha scatenato l’evento TRG:MYP.LABEL00Q

Puo’ sottomettere/lanciare JOB che scoda

Page 53: Mq basic   v2.1

[email protected]

Un esempio di configurazione

RQQ=MYP.LABEL00Q.OUTRMTQM=MQMAS400RMTQ=MYP.LABEL00QTQ=MQFER400.MQMAS400.TQ

TQ-LQQ=MQFER400.MQMAS400.TQUSAGE=XMITQTRIGGER=YESTRGDATA=MQFER400.MQMAS400INITQ=MQFER400.MQMAS400.CHINITQ

LQQ=MQFER400.MQMAS400.CHINITQ

STRMQMCHLI QNAME(MQFER400.MQMAS400.CHINITQ)MQMNAME(MQFER400) - (Channel initiator)

STRMQMCSVR MQMNAME(MQFER400)

Channel - SDRCH=MQFER400.MQMAS400CN=targethost(1414)TQ=MQFER400.MQMAS400.TQ

Channel - RCVCH=MQFER400.MQMAS400

STRMQMLSR 1414 MQMNAME(MQMAS400)

LQQ=MYP.LABEL00QPRC=MQMAS400.PROCESS

PROCESSPRC=MQMAS400.PROCESSAPPID=LIBR/PROGRAM

QMGR=MQFER400 QMGR=MQMAS400

1

2 - Alternativa

*PGM=LIBR/PROGRAM

Parm: DS MQMT Riceve nome della codaE provvede a scodare MQGET

3