Persistence des messages

lundi 6 décembre 2010
par Luc-Michel Demey

La "persistance" d’un message MQ peut être vue comme un niveau de service, un indicateur de l’importance de ce dernier.

Un message désigné comme "persistant" bénéficiera d’une haute protection par MQ, afin de garantir sa livraison, ceci au dépend de consommation CPU et disque plus importantes que pour le message non persistant.
Point intéressant, lors de son redémarrage, le Queue Manager purge tous les messages non persistants présents dans les files.

Des messages d’interrogation de solde, de stock (et les réponses) seront probablement non persistants. Un message de commande, de virement, ... seront très probablement persistants.

Mais comment rendre un message MQ "persistant" ?

Il y a légende tenace qui veux que la persistance d’un message soit celle de la file d’attente dans laquelle il se trouve, certains parlent même de "files persistantes". C’est faux (enfin, presque ...)

Lors du MQPut, l’application qui dépose le message peut spécifier dans le MQMD trois valeurs pour le champ "Persistence" :

  • MQPER_PERSISTENT : le message sera persistant
  • MQPER_NOT_PERSISTENT : le message sera non persistant
  • MQPER_PERSISTENCE_AS_Q_DEF : Dans ce dernier cas, l’application utilise la valeur du paramètre DEFPSIST de la file dans laquelle est déposée le message :
    • YES : le message sera persistant
    • NO : le message sera non persistant (valeur par défaut)

Dans le cas du DQM (Distributed Queue Management), la file d’où est extrait la valeur de la persistance est dans l’ordre :

  • la file alias
  • ou alors la file éloignée
  • ou enfin la XmitQ

La logique et les bonnes pratiques font que c’est l’application (et non l’infrastructure) qui doit décider si le message est ou non persistant.

Dans le cas d’une application qui ne renseigne pas le champ "Persistence" du MQMD (et c’est mal !), celui-ci est renseigné avec la valeur par défaut MQPER_PERSISTENCE_AS_Q_DEF. C’est donc la première file rencontrée qui donnera sa persistance au message. Et si cette file a conservé ses valeurs par défaut (DEFPSIST NO), le message sera non persistant.

Quelque soient les valeurs DEFPSIST des autres files dans lesquelles le message est amené à passer, ce dernier gardera la persistance initiale qui lui a été attribué lors du MQPut.


Brèves

23 janvier - IBM MQ version 8.0 FixPack 14

Le FixPack 14 pour IBM MQ version 8 est disponible.
Rappel : IBM MQ version 8 sort de support (...)

23 décembre 2019 - IBM Integration Bus V10.0 - Fix Pack 10.0.0.19

Le Fix Pack pour IBM Integration Bus 10 (IIB) est disponible (10.0.0.19).

5 décembre 2019 - IBM MQ version 9.1 FixPack 4

Quelques heures après la disponibilité de MQ 914 (CD), IBM annonce la disponibilité du Fixpack 4 (...)

3 décembre 2019 - Annonce IBM MQ version 9.1.4

IBM MQ version 9.1.4 est annoncé ce jour. Il s’agit d’une version de type Continuous Delivery. (...)

28 octobre 2019 - IBM MQ version 9.0 FixPack 8

Le FixPack 8 pour IBM MQ version 9.0.0 est disponible (FP 9.0.0.8)

30 septembre 2019 - Fixpack 18 pour IIB Version 10

IBM annonce aujourd’hui le fixpack 18 pour IBM Integration Bus version 10 (Fix Pack (...)