IBM MQ Automating Journal Management pour IBM i

Depuis sa création, MQSeries (maintenant IBM MQ) utilise un système de logging assez pointu pour assurer son intégrité, à savoir garantir la livraison des messages (persistants !) une fois et une seule.

Sur les plateformes LUW (Linux – Unix – Windows), MQ utilise des fichiers logs (nommées recovery logs , ils sont situés dans //active/S000xxxx.log).
Ce logging peut être circulaire (pas de gestion des logs, mais quelques limitations) ou linéaire (pas de limitations mais nécessité de gérer la suppression des logs devenus inutiles).
Il y avait historiquement un certain nombre de packages (en Perl, shell, …) qui permettaient de gérer cette suppression.
Depuis MQ version 9.0.2, il est possible de configurer le Queue Manager en mode “lla” (Linear Lofs Automatic), et donc d’avoir des logs linéaires, avec purge automatique des logs devenus inutiles, et aucun risque de saturer l’espace disque.

Sur IBM i, MQ utilise pour assurer son intégrité le mécanisme natif des journaux et des récepteurs de journaux, afin d’assurer un logging de type linéaire.
Les récepteurs de journaux jouent un rôle équivalent aux recovery logs, et doivent donc de la même manière être purgés lorsqu’ils ne sont plus nécessaires.
Mais sur IBM i, l’option “lla” n’est pas disponible, ce qui impose aux administrateurs de gérer eux même cette suppression.
Historiquement, le package MQJRNMAINT fourni par IBM proposait une commande (MQJRNMNT), à inclure dans un CL, qui permettait de supprimer les récepteurs de journaux devenus inutiles. Ce package s’appuie sur le userspace AMQJRNINF, qui contient le nom des récepteurs de journaux nécessaires au redémarrage du Queue Manager.

Problème : La page de téléchargement du package MQJRNMAINT a disparu depuis quelque temps des sites IBM.

Heureusement, le laboratoire IBM d’Hursley a décidé de republier cet outil, dans une version mise à jour, et de le mettre à disposition sur Github :
Automating Management of IBM MQ Journal Receivers on IBM i

A noter : Par rapport à la version antérieure, seul le source est fourni, il faut le compiler sur un IBM i disposant d’un compilateur C.

Mise à jour du 11/09/2024 : Une version compilée de l’outil MQJRNMNT a été mise à disposition par le lab :

This is a binary release of the code to automate the management MQ journal receivers on IBM i.
The C program and command have been compiled into a library named MQJRNMNT which has been saved into a save file called MQJRNMNT. The save file is attached as MQJRNMNT.FILE
The program and save file have a target release of V7R2M0.
Follow these steps to restore the save file.
    Copy the save file into a library in the QSYS.LIB file system on your IBM i machine. For example, use the following SCP command substituting {YOURIBMI} with your host name and {YOURLIB} with your library name:
    scp MQJRNMNT.FILE YOURIBMI:/QSYS.LIB/YOURLIB.LIB/MQJRNMNT.FILE MQJRNMNT.FILE
    Log onto your IBM i machine and restore the library with the command :
    RSTLIB SAVLIB(MQJRNMNT) DEV(*SAVF) SAVF(YOURLIB/MQJRNMNT)
    Run the command in report mode to see which receivers are eligible for deletion (substituting QMQM1 with your queue manager library name):
    MQJRNMNT/MQJRNMNT QMGRLIB(QMQM1) OUTPUT(*PRINT) DLTRCV(*NO)