Cette extension fournit un accès aux fonctionnalités des systèmes de messageries et de mise en file d'attente, comme les produits de la famille IBM WebSphere MQSeries, depuis des scripts PHP. L'interface a été conçue pour rendre simple les tâches les plus communes comme délivrer des messages simples à la file d'attente, mais permet aussi aux utilisateurs plus expérimentés d'effectuer des opérations plus complexes. Pour la plupart des utilisateurs, les configurations des options complexes peuvent être tout simplement ignorées.
L'extension SAM interface la messagerie IBM ainsi que les produits de mise en file d'attente en utilisant un jeu de bibliothèques et du code côté client. Ce paquet est disponible en téléchargement gratuit dans le guide du support IBM pack IA94. Il y a une description de ce paquet ainsi que des liens de téléchargements dans l'article "Introduction à XMS - L'API IBM Message Service".
Si vous voulez utiliser SAM pour accéder à l'infrastructure de messagerie et de mise en file d'attente dans un WebSphere MQ, alors vous devriez également installer un gestionnaire local de mise en file d'attente MQ ou installer la paquet client WebSphere MQ. Le paquet client est disponible librement en tant qu'un pack support (MQC6).
Si vous voulez juste tester l'envoi de message depuis et vers une application WebSphere en utilisant le protocole WebSphere Platform Messaging (WPM), alors, vous n'avez pas besoin d'installer le paquet MQC6.
Après avoir installés ces paquets, vous devez vous assurer que le binaire XMS, si vous l'utilisez, et que le client MQ sont accessibles via la variable d'environnement PATH afin qu'Apache et PHP puissent trouver les bibliothèques nécessaires.
L'extension SAM est fournie en tant que module PECL. Vous devriez donc pouvoir la télécharger et l'installer en une seule étape, comme ceci :
pear install sam |
Assurez-vous que le module a été chargé par PHP, en ajoutant la ligne suivante à votre php.ini :
extension=sam.so |
Si vous ne pouvez pas utiliser l'installeur PEAR, vous pouvez télécharger l'extension et la construire manuellement :
pear download sam #téléchargement de sam-<version>.tgz tar -xzf sam-<version>.tgz cd sam-<version> phpize ./configure make make install #vous devriez devoir être root pour cette étape |
Pour avoir la toute dernière source, vous devriez extraire les sources depuis cvs et la construire en utilisant les instructions qui se trouvent dans ce manuel.
Actuellement, vous devez construire l'extension SAM pour Windows car il n'existe pas de binaire pré-construit. L'extension peut être construite en utilisant les procédures standards de construction des extensions Windows.
Vous devez avoir les sources de PHP pour lesquelles l'extension SAM doit être utilisée. Les sources doivent être décompressées dans le répertoire de votre choix.
Vous devez également avoir les bibliothèques et en-têtes utilisés par les extensions PHP, disponibles sur http://www.php.net/extra/win32build.zip et doivent être décompressés dans le même dossier de travail.
Vous devriez obtenir quelque chose comme :
c:\php-build\- | |---php-5.0.5--|---build | |---ext | |--- ... | |---win32build--|---bin |---include |---lib |
Vous devez avoir également un compilateur, par exemple, la version gratuite de Visual Studio C++ Express que vous trouverez sur le site web de Microsoft. Vous devez aussi avoir le SDK Microsoft Windows Platform qui est également disponible sur le site web de Microsoft.
Téléchargez les sources de l'extension SAM (pear download sam) ou en utilisant CVS et copiez les fichiers dans un nouveau dossier "sam" du dossier "ext" des sources PHP.
Pour construire l'extension, ouvrez un environnement de construction Windows via mnu->Tous les programmes->microsoft platform SDK for windows-> open build environment window->windows 200 build environment-> set windows 2000 build environment (retail)
Ceci devrait ouvrir une fenêtre de commande avec toutes les variables d'environnements définies afin d'accéder à la plateforme SDK, etc. Vous devez ensuite définir les variables d'environnements pour Visual Studio en lançant la commande "vcvars32.bat" dans la fenêtre.
Déplacez-vous dans votre dossier de travail, e.g. cd c:\php-build. Ensuite, assurez-vous que les utilitaires win32build soient accessibles en ajoutant la variable d'environnement suivante :
set PATH=..\win32build\bin;%PATH% |
Exécutez la commande buildconf.bat. Ceci devrait reconstruire le fichier configure.js.
Exécutez la commande cscript :
cscript /nologo configure.js --with-sam="c:\program files\ibm\xms" |
Le paramètre additionnel passé à SAM est le chemin d'installation vers les bibliothèques XMS et d'exécution qui ont été installées comme décrit en début de ce manuel.
Vous pouvez spécifier d'autres paramètres cscript dont vous avez besoin pour inclure et excluse des éléments de votre construction de PHP ou des options sélectionnées.
En supposant que tout est Ok jusqu'ici pour vous, vous pouvez maintenant lancer la construction !
nmake php_sam.dll |
Si vous contruisez l'extension SAM avec le compilateur et les outils Microsoft Visual Studio 2005, vous devez effectuer une étape supplémentaire dans le processus de compilation afin de vous assurer que la bibliothèque php_sam.dll soit capable de se lier aux bibliothèques C durant l'exécution. Cette étape ajoute la dépendance directement dans la DLL. Déplacez-vous dans le répertoire où la bibliothèque php_sam.dll a été générée (habituellement le dossier Release_TS ou Debug_TS du dossier des sources PHP) et exécutez l'incantation magique suivante :
mt.exe -manifest php_sam.dll.manifest -outputresource:php_sam.dll;2 |
Si vous construisez l'extension SAM en utilisant le compilateur et les bibliothèques Microsoft Visual Studio 2005, vous devriez aussi vous assurer que les composants d'exécution sont présents sur le système sur lequel vous voulez utiliser SAM. Ceci peut être fait en installation Visual Studio 2005 ou en utilisant le paquet d'exécution librement distribuable.
Afin d'exécuter des fonctions de messageries et de mise en file d'attente, une connexion doit être éablie avec un serveur de messagerie en créant un objet SAMConnection et en appelant sa méthode "connect", avec quelques propriétés de connexion, afin de connecter le script PHP au serveur de messagerie. Pendant le temps où l'objet SAMConnection n'est pas détruit, la connexion sera maintenue et disponible. Tous les objets SAMConnection seront détruis lorsque le script PHP se terminera.
Quelques propriétés par défaut peuvent être utilisées pour la connexion au serveur de messagerie mais le script PHP doit spécifier au minimum le protocole à utiliser.
Les messages envoyés et reçus depuis les files d'attente sont représentés par l'objet SAMMessage. L'objet SAMMessage contient le corps du message (s'il existe) ainsi que les propriétés des en-têtes associés au message. L'objet SAMMessage est soit fourni en tant que paramètre d'une opération sur un message, ou retourné comme résultat.
Les messages doivent avoir des propriétés d'en-têtes associés, qui permettent le contrôle du transport du message ou fournissent des informations futures sur l'application réceptrice. Par défaut, les propriétés des messages sont délivrées au système de messagerie sous la forme de chaînes de caractères et dans ce cas, peuvent être définies comme ceci :
Si vous voulez passer des informations sur le type, une syntahxe alternative peut être utilisée où la valeur et le type sont passés dans un tableau associatif :
Les propriétés peuvent également être extraites depuis l'en-tête d'un message.
Toutes les opérations de messagerie sont exécutées via des appels aux méthodes sur l'objet de connexion. Pour ajouter un message à la file d'attente, la méthode "send" est utilisée, tandis que pour obtenir un message depuis la file d'attente, la méthode "receive" est utilisée. D'autres méthodes offrent d'autres fonctionnalités comme la publication, la souscription ou encore le contrôle sur les transactions.
SAM permet d'envoyer des messages soit à la file d'attente, ou, pour WebSphere MQ et WPM, de publier/souscrire à des sujets. L'envoi à un sujet est spécifié à SAM de la façon habituelle, i.e. sous la forme 'topic://fred', plutôt que sous la forme 'queue://AQUEUE', utilisée pour une opération de point à point. Pour publier/souscrire, il est tout simplement nécessaire de spécifier le correct du courtier lors de l'appel à la méthode "connect" de l'objet SAMConnect et le sujet désiré dans l'argument de destination des appels aux méthodes "send" et "receive" de l'objet SAMConnect. L'interface PHP est cependant identique au model point à point.
Par défaut, SAM crée des souscriptions non durables lors de l'utilisation des fonctionnalités de publication/souscription. Cela signifie que si l'application cliente est inactive lorsque les messages sont publiés sur un sujet, alors il ne les recevra pas lorsqu'il redemarrera. SAM permet également des souscriptions durables à un sujet lors de l'utilisation de WPM ou WebSphere. Le but de ces souscriptions est de permettre aux données d'être reçues par une application cliente même si le client n'est plus actif au moment où les données sont publiées.
Les souscriptions durables sont spécifiées en utilisant l'appel à la méthode "suscribe" de l'objet SAMConnect. Cette méthode prend le sujet destinataire en tant qu'argument d'entrée et retourne l'identifiant de souscription qui pourra être utilisé lors des prochains appels à la méthode "receive". Lorsque la souscription n'est plus nécessaire, la méthode "unsubscribe" de l'objet SAMConnection dot être utilisée pour effacer la souscription.
Exemple 9. Souscription à un sujet en utilisant un serveur WebSphere Platform Messaging (WPM)
|
Toutes les méthodes SAMConnection qui fournissent un accès aux opérations de messagerie retourne FALSE si une erreur survient durant le processus. En plus de cela, l'objet SAMConnection a deux propriétés, "errno" et "error", qui fournissent respectivement le numéro et la description de la dernière erreur survenue sur la connexion.
Objet représentant une connexion à un serveur de messagerie
new SAMConnection - construit un nouvel objet de connexion permettant une connexion à une infrastructure de messagerie.
commit - une méthode qui valide un travail.
connect - une méthode qui connecte un script PHP à un serveur de messagerie.
disconnect - une méthode qui déconnecte un script PHP d'un serveur de messagerie.
isConnected - une méthode qui vérifie si un script PHP est connecté à un serveur de messagerie.
peek - une méthode qui reçoit un message depuis la file d'attente sans pour autant l'effacer de la file d'attente.
peekAll - une méthode qui reçoit un ou plusieurs messages depuis la file d'attente sans pour autant les effacer de la file d'attente.
receive - une méthode qui reçoit un message depuis la file d'attente ou depuis une souscription.
remove - une méthode qui efface un message depuis la file d'attente.
rollback - une méthode qui annule un travail.
send - une méthode qui envoie un message à une file d'attente ou sur un sujet.
subscribe - une méthode qui crée une souscription à un ou plusieurs sujets.
unsubscribe - une méthode qui détruit une suscription à un ou plusieurs sujets.
Objet représentant un message à envoyer ou à recevoir.
new SAMMessage - construit un nouveau message.
Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.
Comportement automatique
Type à utiliser lors de la configuration des propriétés des objets SAM_Message.
Attribut de connexion à utiliser pour définir le nom du service bus entreprise à s'y connecter.
Type à utiliser lors de la configuration des propriétés des objets SAM_Message.
Descripteur du type du corps du message.
Attribut utilisé lors de la réception, de l'envoi et de l'effacement pour identifier les messages.
Propriété de l'en-tête du message.
Type à utiliser lors de la configuration des propriétés des objets SAM_Message.
Attribut de connexion à utiliser pour définir les "endpoints" possibles à s'y connecter.
Type à utiliser lors de la configuration des propriétés des objets SAM_Message.
Attribut de connexion à utiliser pour définir le nom de l'hôte du serveur de messagerie requis.
Type à utiliser lors de la configuration des propriétés des objets SAM_Message.
Type à utiliser lors de la configuration des propriétés des objets SAM_Message.
Comportement manuel (contrôlé par le script)
Attribut utilisé lors de la réception et de l'effacement pour identifier les messages.
Attribut de connexion utilisé pour rendre la connexion non persistante sur le serveur de messagerie.
Attribut de connexion utilisé pour définir le mot de passe pour l'utilisateur utilisé pour la connexion au serveur de messagerie.
Attribut de connexion utilisé pour rendre la connexion persistante sur le serveur de messagerie.
Attribut de connexion utilisé pour spécifier le numéro du port sur lequel le serveur de messagerie écoute.
Option utilisée pour spécifier la priorité de délivrance des demandes.
Propriété du message utilisée pour spécifier l'adresse de la réponse.
Définition du protocole de connexion sélectionnant le protocole IBM Realtime Transport utilisé pour la communication avec le serveur de messagerie.
Type à utiliser lors de la configuration des propriétés des objets SAM_Message.
Attribut de connexion utilisé pour définit la chaîne identifiant la cible.
Descripteur du type de corps du message.
Option du message envoyé utilisé pour spécifier la durée de vie d'un message.
Attribut de connexion utilisé pour définir le comportement transactionnel. Peut être définit à SAM_AUTO (par défaut) ou SAM_MANUAL.
Attribut de connexion utilisé pour définir le compte à utiliser pour se connecter au serveur de messagerie.
Propriété reçue à utiliser pour spécifier le délai d'attente maximal à utiliser lors de la réception d'un message.
Définition du protocole de connexion pour sélectionner le protocole IBM WebSphere MQSeries pour la communication avec un serveur de messagerie.
Définition du protocole de connexion pour sélectionner le protocole IBM WebSphere MQSeries pour la communication avec un serveur de messagerie local.
Définition du protocole de connexion pour sélectionner le protocole IBM WebSphere MQSeries pour la communication avec un serveur de messagerie distant.
Option utilisé sur les demandes envoyées pour spécifier le mode du client cible. Elle peut valoir, par défaut, 'jms' ou 'mq'. La valeur par défaut est 'jms', ce qui signifie qu'un en-tête RFH2 est envoyé avec le message, tandis qu'avec 'mq', aucun en-tête RFH2 n'est envoyé.
Définition du protocole de connexion pour sélectionner le protocole IBM WebSphere Platform Messaging pour la communication avec un serveur de messagerie WebSphere Application Server.
Précédent | Sommaire | Suivant |
runkit_superglobals | Niveau supérieur | SAMConnection::commit() |