Bienvenue...
Soumis par kacy le
...sur mon blog, j'utilise ce site pour noter les petites choses qui me sont utiles, que ça soit informatique ou autre :)
Soumis par kacy le
...sur mon blog, j'utilise ce site pour noter les petites choses qui me sont utiles, que ça soit informatique ou autre :)
Démarrer le command server MQ !
En v5 : strmqcsv
En v6 : strmqmcsvr
En v7 : strmqcsv
1. Déclarer la file d'initialisation du trigger :
DEFINE QLOCAL('QL.TRIGGER_MSGS') + DESCR('File d''initialisation du trigger') + GET(ENABLED) + NOSHARE + NOTRIGGER + REPLACE;
2. Déclarer le process que le trigger monitor lancera lors du déclenchement :
DEFINE PROCESS ('MY_PROCESS') + DESCR('Ma description du process') + APPLTYPE(UNIX) + APPLICID('/var/oa3/mercure/lance4ge.sh') + USERDATA('Paramètres a passer au programme en plus de ceux par défaut') + REPLACE;
3. Déclarer une file locale en activant le triggering, et en spécifiant les paramètres ci dessus :
DEFINE QLOCAL('QL.IN') + TRIGGER + TRIGTYPE(EVERY) + INITQ('QL.TRIGGER_MSGS') + PROCESS('MY_PROCESS') + REPLACE;
4. Lancer un trigger monitor, qui effectuera l'action du lancement de programme sur déclenchement du trigger :
nohup start runmqtrm -m <qm.name> -q QL.TRIGGER_MSGS &
Bon je pensais que j'étais bon pour l'install de la lib. En fait pour faire le dev. il me manque la librairie XSLT-devel (présente dans le package libxslt-devel-1.1.24-1.aix5.1.ppc.rpm
).
Du coup install :
<br /> XMASTER:/var/oa3/rpm>rpm -Uvh libxslt-devel-1.1.24-1.aix5.1.ppc.rpm<br /> error: failed dependencies:<br /> libxml2-devel >= 2.6.27 is needed by libxslt-devel-1.1.24-1<br /> libgcrypt-devel is needed by libxslt-devel-1.1.24-1<br /> pkg-config is needed by libxslt-devel-1.1.24-1<br /> XMASTER:/var/oa3/rpm><br />
...ok donc du coup :
<br /> XMASTER:/var/oa3/rpm>rpm -Uvh libgcrypt-devel-1.4.3-1.aix5.1.ppc.rpm<br /> error: failed dependencies:<br /> info is needed by libgcrypt-devel-1.4.3-1<br /> libgpg-error-devel is needed by libgcrypt-devel-1.4.3-1<br /> XMASTER:/var/oa3/rpm><br />
...bon...
<br /> XMASTER:/var/oa3/rpm>rpm -Uvh libgcrypt-devel-1.4.3-1.aix5.1.ppc.rpm<br /> error: failed dependencies:<br /> info is needed by libgcrypt-devel-1.4.3-1<br /> libgpg-error-devel is needed by libgcrypt-devel-1.4.3-1<br /> XMASTER:/var/oa3/rpm><br />
... bref n'arrivant pas a installer la librairie de dev. (en gros ça bloque sur une dépendance /usr/bin/python
même si j'installe le-dit package) j'ai téléchargé les sources et mis le répertoire contenant les .h
dans mes directives de compilation (-I
) :)
Pour connaître la liste des packages installés sous AIX, il faut taper lslpp -aL | pg
ou avec un grep
si vous recherchez un package particulier...
Donc, suite au plantage et à l'impossibilité de faire fonctionner le 4GL à partir de Java, j'ai changé mon fusil d'épaule...
Soyons fous ! et si on faisait tout dans le 4GL ?
- Lecture du message entrant
- Parsing XML des données
- Insertion en base
- Traitement métier
- Création du message XML de réponse
- Ecriture de ce dernier dans la bonne file
Bon là se profile à l'horizon une autre difficulté : ma méconnaissance du langage C... méconnaissance parce que c'est super loin tout ça, et en plus j'ai jamais bien compris le concept des pointeurs...... ;)=
Bref, je me suis donc lancé, j'ai donc développé un programme 4GL qui fait appel à des fonctions C d'envoi/réception de messages au travers d'MQ, ainsi que des fonctions de parsing/transformation XML (d'où les quelques billets sur l'installation notamment des librairies libxml2 et libxslt sous AIX...).
Donc, petite explication sur l'utilisation de fonction C en 4GL :
Comment ça marche (le principe) :
L'idée est de créer une fonction ayant une signature de la formeint <nom méthode>(int nargs);La fonction doit donc retourner un
int
qui correspond au nombre de paramètres retournés (ne me demandez pas pourquoi, c'est le fonctionnement du 4GL :P ). C'est là où il faut être attentif, a savoir qu'on va utiliser des fonctions du typeibm_lib4gl_returnInt4(mqStatus);ou
ibm_lib4gl_returnString(mqErrmsg);Pour retourner les valeurs souhaitées, (la fonction à utiliser depend bien sûr du type de valeur retournée, cf. la doc du langage 4GL pour la liste exhaustive)
- Le passage de parmètres et la gestion de l'instruction
return
A TERMINER