MQSERIES FAQ

Mise à jour: 6 Aout 2006
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2004-2006 Jean-Louis BICQUELET-SALAÜN
nbsp;

Pour plus d'information au sujet de cette faq, contactez Jean-Louis BICQUELET


FAQ Revised: Wednesday 30 August 2006 13:16:33


Table of Contents

1. concepts
2. installation
3. gestionnaire
4. serveur de commandes
5. queue
6. transactions
7. utilisation
8. licence
9. log

1. concepts

1.1. Quels sont les objets MQSERIES ?
  1. Gestionnaire de files d'attente (Queue Manager)
  2. File d'attente (Queue)
  3. Processus (triggering)
  4. Canaux
  5. Liste des noms (liste de diffusion)
  6. Storage classe (MVS/ESA)

Ces objets possèdent des propriétés ou attributs qui indiquent la façon dont MQSeries doit traiter ces entités.

1.2. Quels sont les types de files d'attente ?
  • QLOCAL
  • QREMOTE
  • QALIAS
  • QMODEL
    • QDYNTEMP
    • QDYMPERM


1.3. Comment nomme-t-on les objets MQSERIES ?
Le nom MQSERIES est unique.

Les caractères autorisés sont A-Z a-Z 0-9 . / _ %.

Les noms sont case sensitive.

Les noms de gestionnaire, file et procesus font 48 caractères maximum, sauf sous MVS où le gestionnaire fait 4 caractères.

Le nom des canaux est limité à 20.

1.4. Qu'est ce qu'un message ?

C'est un ensemble de données constitué par un en-tête et des données envoyé par un programme à un autre programme.

L'entête contient des informations techniques comme le type de caractère, une réponse obligatoire à un message ou à une série de message, la file d'attente de destination ...

Elle correspond à une structure MQMD (MQ Message Descriptor).

Il n'y a pas de limite sur le contenu des données (à l'exception de certaines plateformes).


2. installation

2.1. Comment installe-t-on MQSERIES?

En fonction des système il faut utiliser:

AIXsmitty ou installp
HP-UXswinstall ou update
Solarissysadm ou pkgadd
windowssetup


2.2. Où est installé MQSERIES?

/var/mqmgestionnaire et files
/var/mqm/loglogs des gestionnaires
/usr/lpp/mqm code MQSERIES AIX
/opt/mqmcode MQSERIES HP-UX ou Sun Solaris


2.3. Comment passer des commandes MQSERIES?

MQSeries crée un user mqm de groupe mqm. C'est cet utilisateur qu'il faut utiliser pour lancer les commandes MQSeries.


3. gestionnaire

3.1. Comment créer un gestionnaire de queue?

crtmqm -c "test2" -t 10000 -u DLQ.TEST2 -q avril.t1 WebSphere MQ queue manager created. Creating or replacing default objects for avril.t1. Default objects statistics : 31 created. 0 replaced. 0 failed. Completing setup. Setup completed.

Pensez à préciser une file de rebut.

SYSTEM.DEAD.LETTER.QUEUE est créée automatiquement.

3.2. Quels sont les options de création d'un gestionnaire ?

-c description du gestionnaire
-d file de transmission par défaut
-h nombre maximal de connexions
-q gestionnaire par défaut
-t intervalle pour le déclenchement automatique
-u file de rebut systeme
-x nombre maximal de messages non commités
-z suppression des messages d'erreur
-lc journalisation circulaire
-ll journalisation linéaire
-ld répertoire pour les fichiers journaaux
-lp nombre des fichiers journaux primaires
-ls nombre des fichiers journaux secondaires

Si le paramètre de journalisation est omis, la journalisation est définie dans le fichier mqs.ini. Sinon la journalisation est circulaire.

3.3. Comment démarrer un gestionnaire ?

strmqm mars.t1

WebSphere MQ queue manager 'mars.t1' started.

En option: -z suppresion des messages d'erreur

3.4. Quels sont les processus démarrés immédiatement ?
 ps -ef | grep am
     mqm 151772 405554   0 10:48:58      -  0:00 amqzlaa0 -mmars.t1 -fip0
     mqm 159938 405554   0 10:48:58      -  0:00 /usr/mqm/bin/amqzdmaa -m mars.t1
     mqm 270384 405554   0 10:48:58      -  0:00 amqzllp0 -mmars.t1 ?
     mqm 299016 405554   0 10:48:58      -  0:00 amqhasmx mars!t1 /var/mqm
     mqm 303150 405554   0 10:48:57      -  0:00 /usr/mqm/bin/amqzfuma -m mars.t1
     mqm 352348 405554   0 10:48:58      -  0:00 /usr/mqm/bin/amqrrmfa -t2332800 -s2592000 -p2592000 -g5184000 -c3600 -m mars.t1
     mqm 405554      1   0 10:48:57      -  0:00 amqzxma0 -m mars.t1


3.5. Où se trouve le fichier de configuration du gestionnaire?
Dans /var/mqm/qmgrs/[gestionnire]. Son nom est qm.ini.

3.6. Comment arrêter un gestionnaire proprement?

$ endmqm mars.t1

Quiesce request accepted. The queue manager will stop when all outstanding work
is complete.

options

-carrêt contrôlé progressif (par défaut)
-warrêt contrôlé synchrone
-iarrêt immédiat
-parrêt forcé (pre-emptive), non controlé

  • Arrêt normal: le gestionnaire s'arrête quand toutes les applications sont arrêtées. Aucune connexion n'est autorisée.
  • Arrêt immédiat: l'arrêt a lieu dès la fin de tous les ordres en cours. Toutes les autres opérations sont annulées.
  • Arrêt forcé: pas d'attente, il peut y avoir des résultats imprévisibles.


3.7. Comment arrêter un gestionnaire manuellement?

$ ps-ef| grep mqm
kill-9
de chaque process dans l'ordre:

amqhasmxgestion du journal
amqharmxprogramme de formatage journal (journeaux de type LINEAR uniquement)
amqzllp0processus de point contrôle
amqzlaa0agents du gestionnaire de files d'attente
amqzxma0contrôleur de traitement


3.8. Comment supprimer un gestionnaire?

$dlmtmqm mars.t1

En option: -z suppresion des messages d'erreur

Le gestionnaire est arrêté, mais ATTENTION on perd les données

3.9. Comment supprimer manuellement un gestionnaire?
  • supprimer les répertoires
  • modifier le fichier mqs.ini



4. serveur de commandes

4.1. Comment démarrer le serveur de commandes?

$ strmqcsv mars.t1 WebSphere MQ command server started.

4.2. Comment afficher l'état du serveur de commandes?
$strmqcsv
AMQ8146: WebSphere MQ queue manager not available.

$ dspmqcsv mars.t1

WebSphere MQ Command Server Status  . . :   Running


4.3. Quels sont les états du serveur de commandes?
Startingen cours de démarrage
Runningen cours d'execution
Running with SYSTEM.ADMIN.COMMAND.QUEUE
Endingen cours d'arrêt
Stoppedserveur arrêté


4.4. Comment arrêter le serveur de commandes?

$endmqmcsv mars.t1

WebSphere MQ command server ending.
WebSphere MQ command server ended.

Le serveur peut être arrêté de la manière suivante:

  • -c arrêt controlé (par défaut)
  • -i arrêt immédiat



5. queue

5.1. Comment afficher toutes les files locales?

DISPLAY QLOCAL(*)

AMQ8409: Display Queue details.
   QUEUE(SYSTEM.ADMIN.CHANNEL.EVENT)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.ADMIN.COMMAND.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.ADMIN.PERFM.EVENT)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.ADMIN.QMGR.EVENT)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.AUTH.DATA.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.CHANNEL.INITQ)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.CHANNEL.SYNCQ)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.CICS.INITIATION.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.CLUSTER.COMMAND.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.CLUSTER.REPOSITORY.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.CLUSTER.TRANSMIT.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.DEAD.LETTER.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.INITIATION.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.LOCAL.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.PENDING.DATA.QUEUE)


5.2. Comment créer une queue locale?

DEFINE QLOCAL(mars.ql1)

AMQ8006: WebSphere MQ queue created.


5.3. Comment afficher les attributs d'une queue locale?

DISPLAY QLOCAL(mars.ql1)

     2 : display ql(mars.ql1)
AMQ8409: Display Queue details.
   DESCR(WebSphere MQ Default Local Queue)
   PROCESS( )                              BOQNAME( )
   INITQ( )                                TRIGDATA( )
   CLUSTER( )                              CLUSNL( )
   QUEUE(MARS.QL1)                         CRDATE(2006-05-17)
   CRTIME(09.13.18)                        ALTDATE(2006-05-17)
   ALTTIME(09.13.18)                       GET(ENABLED)
   PUT(ENABLED)                            DEFPRTY(0)
   DEFPSIST(NO)                            MAXDEPTH(5000)
   MAXMSGL(4194304)                        BOTHRESH(0)
   SHARE                                   DEFSOPT(SHARED)
   HARDENBO                                MSGDLVSQ(PRIORITY)
   RETINTVL(999999999)                     USAGE(NORMAL)
   NOTRIGGER                               TRIGTYPE(FIRST)
   TRIGDPTH(1)                             TRIGMPRI(0)
   QDEPTHHI(80)                            QDEPTHLO(20)
   QDPMAXEV(ENABLED)                       QDPHIEV(DISABLED)
   QDPLOEV(DISABLED)                       QSVCINT(999999999)
   QSVCIEV(NONE)                           DISTL(NO)
   DEFTYPE(PREDEFINED)                     TYPE(QLOCAL)
   SCOPE(QMGR)                             DEFBIND(OPEN)
   IPPROCS(0)                              OPPROCS(0)
   CURDEPTH(0)


5.4. Comment modifier des attributs d'une queue locale?

5 : def ql(mars.ql1) replace + descr('mon test')

       : descr('mon test')
AMQ8006: WebSphere MQ queue created.
     7 : display qlocal(mars.ql1)
AMQ8409: Display Queue details.
   DESCR(mon test)                         PROCESS( )
   BOQNAME( )                              INITQ( )
 ...


5.5. Comment comment afficher le status d'une queue locale?

11 : display qstatus(mars.ql1)

AMQ8450: Display queue status details.
   QUEUE(MARS.QL1)                         IPPROCS(0)
   OPPROCS(0)                              CURDEPTH(0)
   UNCOM(NO)
   


5.6. Quels sont les parametres d'une queue locale?

def ql

AMQ8427: Valid syntax for the MQSC command:

  DEFINE QLOCAL(q_name)
    [ BOQNAME(string) ]                     [ BOTHRESH(integer) ]
    [ CLUSNL(namelist_name) ]               [ CLUSTER(cluster_name) ]
    [ DEFBIND( NOTFIXED | OPEN ) ]          [ DEFPRTY(integer) ]
    [ DEFPSIST( NO | YES ) ]                [ DESCR(string) ]
    [ DEFSOPT( EXCL | SHARED ) ]            [ DISTL( NO | YES ) ]
    [ GET( ENABLED | DISABLED ) ]           [ INITQ(string) ]
    [ LIKE(qlocal_name) ]                   [ MAXDEPTH(integer) ]
    [ MAXMSGL(integer) ]                    [ MSGDLVSQ( PRIORITY | FIFO ) ]
    [ NOHARDENBO | HARDENBO ]               [ NOREPLACE | REPLACE ]
    [ NOSHARE | SHARE ]                     [ NOTRIGGER | TRIGGER ]
    [ PROCESS(string) ]                     [ PUT( ENABLED | DISABLED ) ]
    [ QDEPTHHI(integer) ]                   [ QDEPTHLO(integer) ]
    [ QDPHIEV( ENABLED | DISABLED ) ]       [ QDPLOEV( ENABLED | DISABLED ) ]
    [ QDPMAXEV( ENABLED | DISABLED ) ]      [ QSVCIEV( NONE | HIGH | OK ) ]
    [ QSVCINT(integer) ]                    [ RETINTVL(integer) ]
    [ SCOPE( QMGR | CELL ) ]                [ TRIGDATA(string) ]
    [ TRIGDPTH(integer) ]                   [ TRIGMPRI(integer) ]
                                            [ TRIGTYPE( FIRST | EVERY | DEPTH |
NONE ) ]                                    [ USAGE( NORMAL | XMITQ ) ]

DEFPRTY priorité des messages
DEFPSIST persistance de messages
DESCR description des messages
PUT autorisation d'écriture
GET autorisation de lecture
DISTL distribution de la liste supportée ou non
MAXDEPTH nombre maximum de messages dans la file
MAXMSGL longueur maximum des messages dans la file
MSGDLVSQ règle de lecture des messages
NOHARDENBO | HARDENBO sauvegarde du compteur backout en cas d'arrêt du gestionnaire
NOSHARE | SHARE lecture partagée des messages
USAGE indique si la file est à usage normale ou si c'est une file de transmission (XMTIQ
BOQNAME nom de la file où le message est stocké après dépassement du compteur BOTHRESH
BOTHRESH nombre de lectures possibles avec backout
DEFSOPT option par défaut d'ouverture de file


5.7. Comment définir une file alias?

def qalias(mars.qa1) targq(mars.ql1)


    13 : def qalias(mars.qa1) targq(mars.ql1)
AMQ8006: WebSphere MQ queue created.



5.8. Comment afficher les files alias?

display qalias(*)


      16 : display qalias(*)
AMQ8409: Display Queue details.
   QUEUE(MARS.QA1)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.ALIAS.QUEUE)


5.9. Quels sont les attributs d'un file alias?

display qalias(mars.qa1)

  15 : display qalias(mars.qa1)
AMQ8409: Display Queue details.
   DESCR( )                                TARGQ(MARS.QL1)
   CLUSTER( )                              CLUSNL( )
   QUEUE(MARS.QA1)                         ALTDATE(2006-05-17)
   ALTTIME(09.56.29)                       GET(ENABLED)
   PUT(ENABLED)                            DEFPRTY(0)
   DEFPSIST(NO)                            SCOPE(QMGR)
   DEFBIND(OPEN)                           TYPE(QALIAS)



5.10. Comment définir une file modèle?

define qmodel(mars.qm1) deftype(PERMDYN)

type possible :

  • PERMDYN
  • TEMPDYN (valeur par défaut) une file dynamique temporaire est créée. Cette file n'accepte pas les messages persistants et est automatiquement détruite lors de MQCLOSE. PERMDYN une file dynamique permanente est créee et n'est détruite que si un programme demande volontairement sa destruction.


5.11. Comment définir une file modèle?

define qmodel(mars.qm) deftype(PERMDYN)

5.12. Comment définir une file par copie "LIKE" ?

def qlocal(mars.ql1) like (mars.like)

5.13. Comment modifier les attributs d'une file ?

  • ALTER QLOCAL(mars.ql1)
  • ALTER ALIAS(mars.qa1)
  • ALTER MODEL(mars.qm1)

exemple:

   22 : alter qlocal(mars.ql1) descr('description')
AMQ8008: WebSphere MQ queue changed.
display ql(mars.ql1)
    24 : display ql(mars.ql1)
AMQ8409: Display Queue details.
   DESCR(description)                      PROCESS( )
   BOQNAME( )                              INITQ( )



5.14. Comment supprimer une file ?

  • DELETE QLOCAL(mars.ql1)
  • DELETE ALIAS(mars.qa1)
  • DELETE MODEL(mars.qm1)

Une file ne peut être supprimée si elle contient des messages non commités.

exemple:


display qmodel(*)
     3 : display qmodel(*)
AMQ8409: Display Queue details.
   QUEUE(MARS.QM1)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.MODEL.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.MQSC.REPLY.QUEUE)
     4 : delete qmodel(mars.qm1)
AMQ8007: WebSphere MQ queue deleted.
display qmodel(*)
     5 : display qmodel(*)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.MODEL.QUEUE)
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.MQSC.REPLY.QUEUE)


5.15. Comment supprimer une file qui contient des messages ?

DELETE QLOCAL(mars.ql1) PURGE

5.16. Comment vider une file ?

CLEAR QLOCAL(mars.ql1)

Attention la commande échoue si la file contient des messages non commités, ou si la file est ouverte par une application (quelles que soient les options d'ouverture).


6. transactions

6.1. Comment afficher les transactions ?

$ dspmqtrn

There are no prepared transactions.
$ dspmqtrn -m mars.t1
There are no prepared transactions.


6.2. Comment résoudre les problèmes liés aux transactions douteuses?

$ dspmqtrn [option] -m mars.t1 transaction option peut être:

  1. -c commit de la transaction
  2. -b backout de la transaction



7. utilisation

7.1. Comment lancer un interpréteur de commande?

runmqsc mars.t1

5724-B41 (C) Copyright IBM Corp. 1994, 2002.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager mars.t1.

ou runmqsc mars.t1 -q nomfichier

La sortie se fait par la commande END.

On peut lancer un flot de commande avec < fichier


8. licence

8.1. Comment enregistrer la licence ?
setmqprd

8.2. Comment obtenir une période d'essai?
setmqtry


9. log

9.1. Comment obtenir l'image formatée des logs?

$ dmpmqlog

AMQ7701: DMPMQLOG command is starting.
AMQ7718: DMPMQLOG command is using a default of 'mars.t1' for the queue manager name.
AMQ7005: The queue manager is running.
AMQ7716: DMPMQLOG command has finished unsuccessfully.
$ dmpmqlog -m mars.t1
AMQ7701: DMPMQLOG command is starting.
AMQ7005: The queue manager is running.
AMQ7716: DMPMQLOG command has finished unsuccessfully.

Si le nom n'est pas spécifié, le gestionnaire par défaut est utilisé.

9.2. Où se trouve les logs?

Dans le répertoire Errors. Le fichier log qui contient les dernières informations est AMQERR1.LOG.


Copyright (c) 2005-2006 Jean-Louis BICQUELET

This list of questions and answers was generated by makefaq.