mq basic v2.1
Post on 04-Jun-2015
471 Views
Preview:
TRANSCRIPT
stefano.tassi@dexer.it
Websphere MQ Series
stefano.tassi@dexer.it
Immaginiamo uno scenario molto comune
SYS1 SYS2
Copiare, spostare informazioni da un sistema ad un altro
Cosa dobbiamo considerare?
stefano.tassi@dexer.it
Immaginiamo uno scenario molto comune
SYS1 SYS2
CommitmentAtomicitàUna sola copia del messaggio presente nei sistemi
stefano.tassi@dexer.it
SYS1 SYS2
Network availabilitySystem availabilityIndipendenza dalla rete
stefano.tassi@dexer.it
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???????????中国
stefano.tassi@dexer.it
SYS1 SYS2
Indipendenza dalla piattaforma
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
Websphere MQ Series – Concetti di base
▪Code
•Contenitore di messaggi
•su i5 l’oggetto CODA e’ implementata con JRN/JRNRCV + streamfiles in IFS
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
Websphere MQ Series▪Ridotta complessità nella gestione
– WebSphere MQ Explorer tool (amministrazione remota) - Eclypse framework
stefano.tassi@dexer.it
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)
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
Websphere MQ Series: Semplificazione
▪Portabilità lato Server
Server• AIX• HP-UX• i5• Linux• Solaris• Windows• z/OS• ...
stefano.tassi@dexer.it
Websphere MQ Series: Affidabilità e Integrità
Commitment - Transazioni– Vengono onorati Commit/Rollback nelle applicazioni native rpg
stefano.tassi@dexer.it
stefano.tassi@dexer.it
QM
Q
CH
MQ Objects
stefano.tassi@dexer.it
Architettura basata su un singolo QManager
▪Le applicazioni risiedono sulla stessa macchina
▪Il Qmanager provvede all’inoltro dei messaggi (asincroni)
stefano.tassi@dexer.it
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)
stefano.tassi@dexer.it
Architettura basata su più QManager
stefano.tassi@dexer.it
Program-to-progam, 1 sistema
Local Queue
Websphere MQ Series
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
Program-to-progam, 2 sistemi
Canale Canale:• TCP/IP• SNA• IPX• ...
Server_1
Server_2
Remote Queue
Local Queue
Websphere MQ Series
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
Websphere MQ Series
PGM
CFG
Non guardate i contenuti ma osservate l’isolamento programma-configurazione
stefano.tassi@dexer.it
API
Disponibili
Websphere MQ Series
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
Il Sottosistema QMQM
stefano.tassi@dexer.it
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 )
stefano.tassi@dexer.it
LISTENER
STRMQMLSR PORT(1414)Un listener per ogni Qmanager
Check con Telnet
stefano.tassi@dexer.it
Canali… SENDER
stefano.tassi@dexer.it
Canali… Cosa occorre controllare?
RUNNING --> OKSTOPPED --> Canale disabilitatoRETRYING --> tentativi di riconnessioneINACTIVE --> OK
stefano.tassi@dexer.it
I log….
stefano.tassi@dexer.it
I log….
stefano.tassi@dexer.it
Il Quiescing di MQ
Endmqm …
Endsbs QMQM
stefano.tassi@dexer.it
Il Rimozione ricevitori MQ
RCDMQMIMG OBJ(*ALL) OBJTYPE(*ALL) MQMNAME(QM.COL) DSPJRNDTA(*YES)
stefano.tassi@dexer.it
Un esempio di configurazione
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
Websphere MQ Series - Automatismi
▪Triggering di una Coda– rileva messaggio in arrivo su una coda– profondità...
Programma in ascolto - generico
Scodatore specializzato
stefano.tassi@dexer.it
Websphere MQ Series - Automatismi
▪Triggering di una Coda
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
stefano.tassi@dexer.it
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
top related